diff --git a/edlang_codegen_llvm/codegen/index.html b/edlang_codegen_llvm/codegen/index.html index fa2dbd541..14bb2c749 100644 --- a/edlang_codegen_llvm/codegen/index.html +++ b/edlang_codegen_llvm/codegen/index.html @@ -1,2 +1,2 @@ edlang_codegen_llvm::codegen - Rust -

Functions

\ No newline at end of file +

Functions

\ No newline at end of file diff --git a/edlang_ir/enum.BinOp.html b/edlang_ir/enum.BinOp.html index 4c1a42c12..62146cb5a 100644 --- a/edlang_ir/enum.BinOp.html +++ b/edlang_ir/enum.BinOp.html @@ -1,5 +1,5 @@ BinOp in edlang_ir - Rust -

Enum edlang_ir::BinOp

source ·
pub enum BinOp {
+    

Enum edlang_ir::BinOp

source ·
pub enum BinOp {
 
Show 17 variants Add, Sub, Mul, @@ -17,7 +17,7 @@ Ge, Gt, Offset, -
}

Variants§

§

Add

§

Sub

§

Mul

§

Div

§

Rem

§

BitXor

§

BitAnd

§

BitOr

§

Shl

§

Shr

§

Eq

§

Lt

§

Le

§

Ne

§

Ge

§

Gt

§

Offset

Trait Implementations§

source§

impl Clone for BinOp

source§

fn clone(&self) -> BinOp

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 BinOp

source§

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

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

impl Copy for BinOp

Auto Trait Implementations§

§

impl RefUnwindSafe for BinOp

§

impl Send for BinOp

§

impl Sync for BinOp

§

impl Unpin for BinOp

§

impl UnwindSafe for BinOp

Blanket Implementations§

source§

impl<T> Any for T
where +

}

Variants§

§

Add

§

Sub

§

Mul

§

Div

§

Rem

§

BitXor

§

BitAnd

§

BitOr

§

Shl

§

Shr

§

Eq

§

Lt

§

Le

§

Ne

§

Ge

§

Gt

§

Offset

Trait Implementations§

source§

impl Clone for BinOp

source§

fn clone(&self) -> BinOp

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 BinOp

source§

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

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

impl Copy for BinOp

Auto Trait Implementations§

§

impl RefUnwindSafe for BinOp

§

impl Send for BinOp

§

impl Sync for BinOp

§

impl Unpin for BinOp

§

impl UnwindSafe for BinOp

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/edlang_ir/enum.ConstKind.html b/edlang_ir/enum.ConstKind.html index 5affc3ad8..82596ffef 100644 --- a/edlang_ir/enum.ConstKind.html +++ b/edlang_ir/enum.ConstKind.html @@ -1,8 +1,8 @@ ConstKind in edlang_ir - Rust -

Enum edlang_ir::ConstKind

source ·
pub enum ConstKind {
+    

Enum edlang_ir::ConstKind

source ·
pub enum ConstKind {
     Value(ValueTree),
     ZeroSized,
-}

Variants§

§

Value(ValueTree)

§

ZeroSized

Trait Implementations§

source§

impl Clone for ConstKind

source§

fn clone(&self) -> ConstKind

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 ConstKind

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

Value(ValueTree)

§

ZeroSized

Trait Implementations§

source§

impl Clone for ConstKind

source§

fn clone(&self) -> ConstKind

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 ConstKind

source§

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

Formats the value using the given formatter. 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/edlang_ir/enum.ConstValue.html b/edlang_ir/enum.ConstValue.html index 9d586d7ee..b86d68483 100644 --- a/edlang_ir/enum.ConstValue.html +++ b/edlang_ir/enum.ConstValue.html @@ -1,5 +1,5 @@ ConstValue in edlang_ir - Rust -
pub enum ConstValue {
+    
pub enum ConstValue {
 
Show 15 variants Bool(bool), Char(char), I8(i8), @@ -15,7 +15,7 @@ U128(u128), F32(f32), F64(f64), -
}

Variants§

§

Bool(bool)

§

Char(char)

§

I8(i8)

§

I16(i16)

§

I32(i32)

§

I64(i64)

§

I128(i128)

§

Isize(isize)

§

U8(u8)

§

U16(u16)

§

U32(u32)

§

U64(u64)

§

U128(u128)

§

F32(f32)

§

F64(f64)

Trait Implementations§

source§

impl Clone for ConstValue

source§

fn clone(&self) -> ConstValue

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 ConstValue

source§

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

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

impl Copy for ConstValue

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

}

Variants§

§

Bool(bool)

§

Char(char)

§

I8(i8)

§

I16(i16)

§

I32(i32)

§

I64(i64)

§

I128(i128)

§

Isize(isize)

§

U8(u8)

§

U16(u16)

§

U32(u32)

§

U64(u64)

§

U128(u128)

§

F32(f32)

§

F64(f64)

Trait Implementations§

source§

impl Clone for ConstValue

source§

fn clone(&self) -> ConstValue

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 ConstValue

source§

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

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

impl Copy for ConstValue

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/edlang_ir/enum.FloatTy.html b/edlang_ir/enum.FloatTy.html index 67f08e973..4a348dc07 100644 --- a/edlang_ir/enum.FloatTy.html +++ b/edlang_ir/enum.FloatTy.html @@ -1,15 +1,15 @@ FloatTy in edlang_ir - Rust -

Enum edlang_ir::FloatTy

source ·
pub enum FloatTy {
+    

Enum edlang_ir::FloatTy

source ·
pub enum FloatTy {
     F32,
     F64,
-}

Variants§

§

F32

§

F64

Trait Implementations§

source§

impl Clone for FloatTy

source§

fn clone(&self) -> FloatTy

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 FloatTy

source§

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

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

impl Ord for FloatTy

source§

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

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

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

Variants§

§

F32

§

F64

Trait Implementations§

source§

impl Clone for FloatTy

source§

fn clone(&self) -> FloatTy

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 FloatTy

source§

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

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

impl Ord for FloatTy

source§

fn cmp(&self, other: &FloatTy) -> 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 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 - Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for FloatTy

source§

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

This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd,
Restrict a value to a certain interval. Read more
source§

impl PartialEq for FloatTy

source§

fn eq(&self, other: &FloatTy) -> 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 PartialOrd for FloatTy

source§

fn partial_cmp(&self, other: &FloatTy) -> 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 <= +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for FloatTy

source§

fn partial_cmp(&self, other: &FloatTy) -> 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 <= operator. 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 >= -operator. Read more
source§

impl Copy for FloatTy

source§

impl Eq for FloatTy

source§

impl StructuralEq for FloatTy

source§

impl StructuralPartialEq for FloatTy

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +operator. Read more

source§

impl Copy for FloatTy

source§

impl Eq for FloatTy

source§

impl StructuralEq for FloatTy

source§

impl StructuralPartialEq for FloatTy

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/edlang_ir/enum.IntTy.html b/edlang_ir/enum.IntTy.html index fb56f78f0..2ec5e26be 100644 --- a/edlang_ir/enum.IntTy.html +++ b/edlang_ir/enum.IntTy.html @@ -1,19 +1,19 @@ IntTy in edlang_ir - Rust -

Enum edlang_ir::IntTy

source ·
pub enum IntTy {
+    

Enum edlang_ir::IntTy

source ·
pub enum IntTy {
     I128,
     I64,
     I32,
     I16,
     I8,
     Isize,
-}

Variants§

§

I128

§

I64

§

I32

§

I16

§

I8

§

Isize

Trait Implementations§

source§

impl Clone for IntTy

source§

fn clone(&self) -> IntTy

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 IntTy

source§

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

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

impl Ord for IntTy

source§

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

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

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

Variants§

§

I128

§

I64

§

I32

§

I16

§

I8

§

Isize

Trait Implementations§

source§

impl Clone for IntTy

source§

fn clone(&self) -> IntTy

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 IntTy

source§

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

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

impl Ord for IntTy

source§

fn cmp(&self, other: &IntTy) -> 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 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 - Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for IntTy

source§

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

This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd,
Restrict a value to a certain interval. Read more
source§

impl PartialEq for IntTy

source§

fn eq(&self, other: &IntTy) -> 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 PartialOrd for IntTy

source§

fn partial_cmp(&self, other: &IntTy) -> 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 <= +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for IntTy

source§

fn partial_cmp(&self, other: &IntTy) -> 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 <= operator. 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 >= -operator. Read more
source§

impl Copy for IntTy

source§

impl Eq for IntTy

source§

impl StructuralEq for IntTy

source§

impl StructuralPartialEq for IntTy

Auto Trait Implementations§

§

impl RefUnwindSafe for IntTy

§

impl Send for IntTy

§

impl Sync for IntTy

§

impl Unpin for IntTy

§

impl UnwindSafe for IntTy

Blanket Implementations§

source§

impl<T> Any for T
where +operator. Read more

source§

impl Copy for IntTy

source§

impl Eq for IntTy

source§

impl StructuralEq for IntTy

source§

impl StructuralPartialEq for IntTy

Auto Trait Implementations§

§

impl RefUnwindSafe for IntTy

§

impl Send for IntTy

§

impl Sync for IntTy

§

impl Unpin for IntTy

§

impl UnwindSafe for IntTy

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/edlang_ir/enum.LocalKind.html b/edlang_ir/enum.LocalKind.html index 0c274a86b..468b2f558 100644 --- a/edlang_ir/enum.LocalKind.html +++ b/edlang_ir/enum.LocalKind.html @@ -1,9 +1,9 @@ LocalKind in edlang_ir - Rust -

Enum edlang_ir::LocalKind

source ·
pub enum LocalKind {
+    

Enum edlang_ir::LocalKind

source ·
pub enum LocalKind {
     Temp,
     Arg,
     ReturnPointer,
-}

Variants§

§

Temp

§

Arg

§

ReturnPointer

Trait Implementations§

source§

impl Clone for LocalKind

source§

fn clone(&self) -> LocalKind

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 LocalKind

source§

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

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

impl Copy for LocalKind

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

Temp

§

Arg

§

ReturnPointer

Trait Implementations§

source§

impl Clone for LocalKind

source§

fn clone(&self) -> LocalKind

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 LocalKind

source§

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

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

impl Copy for LocalKind

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/edlang_ir/enum.LogicalOp.html b/edlang_ir/enum.LogicalOp.html index 0bcc2acbe..cdf18bc64 100644 --- a/edlang_ir/enum.LogicalOp.html +++ b/edlang_ir/enum.LogicalOp.html @@ -1,8 +1,8 @@ LogicalOp in edlang_ir - Rust -

Enum edlang_ir::LogicalOp

source ·
pub enum LogicalOp {
+    

Enum edlang_ir::LogicalOp

source ·
pub enum LogicalOp {
     And,
     Or,
-}

Variants§

§

And

§

Or

Trait Implementations§

source§

impl Clone for LogicalOp

source§

fn clone(&self) -> LogicalOp

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 LogicalOp

source§

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

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

impl Copy for LogicalOp

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

And

§

Or

Trait Implementations§

source§

impl Clone for LogicalOp

source§

fn clone(&self) -> LogicalOp

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 LogicalOp

source§

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

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

impl Copy for LogicalOp

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/edlang_ir/enum.Operand.html b/edlang_ir/enum.Operand.html index 28ab2d4a4..b8c5baa4a 100644 --- a/edlang_ir/enum.Operand.html +++ b/edlang_ir/enum.Operand.html @@ -1,9 +1,9 @@ Operand in edlang_ir - Rust -

Enum edlang_ir::Operand

source ·
pub enum Operand {
+    

Enum edlang_ir::Operand

source ·
pub enum Operand {
     Copy(Place),
     Move(Place),
     Constant(ConstData),
-}

Variants§

§

Copy(Place)

§

Move(Place)

§

Constant(ConstData)

Trait Implementations§

source§

impl Clone for Operand

source§

fn clone(&self) -> Operand

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 Operand

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

Copy(Place)

§

Move(Place)

§

Constant(ConstData)

Trait Implementations§

source§

impl Clone for Operand

source§

fn clone(&self) -> Operand

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 Operand

source§

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

Formats the value using the given formatter. 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/edlang_ir/enum.PlaceElem.html b/edlang_ir/enum.PlaceElem.html index 8e14b0fa3..d9339c5d7 100644 --- a/edlang_ir/enum.PlaceElem.html +++ b/edlang_ir/enum.PlaceElem.html @@ -1,5 +1,5 @@ PlaceElem in edlang_ir - Rust -

Enum edlang_ir::PlaceElem

source ·
pub enum PlaceElem {
+    

Enum edlang_ir::PlaceElem

source ·
pub enum PlaceElem {
     Deref,
     Field {
         field_idx: usize,
@@ -7,7 +7,7 @@
     Index {
         local: usize,
     },
-}

Variants§

§

Deref

§

Field

Fields

§field_idx: usize
§

Index

Fields

§local: usize

Trait Implementations§

source§

impl Clone for PlaceElem

source§

fn clone(&self) -> PlaceElem

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 PlaceElem

source§

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

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

impl Copy for PlaceElem

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

Deref

§

Field

Fields

§field_idx: usize
§

Index

Fields

§local: usize

Trait Implementations§

source§

impl Clone for PlaceElem

source§

fn clone(&self) -> PlaceElem

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 PlaceElem

source§

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

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

impl Copy for PlaceElem

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/edlang_ir/enum.RValue.html b/edlang_ir/enum.RValue.html index dfb754326..030e42610 100644 --- a/edlang_ir/enum.RValue.html +++ b/edlang_ir/enum.RValue.html @@ -1,11 +1,11 @@ RValue in edlang_ir - Rust -

Enum edlang_ir::RValue

source ·
pub enum RValue {
+    

Enum edlang_ir::RValue

source ·
pub enum RValue {
     Use(Operand, Span),
     Ref(bool, Operand, Span),
     BinOp(BinOp, Operand, Operand, Span),
     LogicOp(LogicalOp, Operand, Operand, Span),
     UnOp(UnOp, Operand, Span),
-}

Variants§

Trait Implementations§

source§

impl Clone for RValue

source§

fn clone(&self) -> RValue

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 RValue

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

Trait Implementations§

source§

impl Clone for RValue

source§

fn clone(&self) -> RValue

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 RValue

source§

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

Formats the value using the given formatter. 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/edlang_ir/enum.StatementKind.html b/edlang_ir/enum.StatementKind.html index be1a0a084..3a9c6a022 100644 --- a/edlang_ir/enum.StatementKind.html +++ b/edlang_ir/enum.StatementKind.html @@ -1,9 +1,9 @@ StatementKind in edlang_ir - Rust -
pub enum StatementKind {
+    
pub enum StatementKind {
     Assign(Place, RValue),
     StorageLive(usize),
     StorageDead(usize),
-}

Variants§

§

Assign(Place, RValue)

§

StorageLive(usize)

§

StorageDead(usize)

Trait Implementations§

source§

impl Clone for StatementKind

source§

fn clone(&self) -> StatementKind

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 StatementKind

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

Assign(Place, RValue)

§

StorageLive(usize)

§

StorageDead(usize)

Trait Implementations§

source§

impl Clone for StatementKind

source§

fn clone(&self) -> StatementKind

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 StatementKind

source§

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

Formats the value using the given formatter. 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/edlang_ir/enum.Terminator.html b/edlang_ir/enum.Terminator.html index 42826725d..092153b51 100644 --- a/edlang_ir/enum.Terminator.html +++ b/edlang_ir/enum.Terminator.html @@ -1,5 +1,5 @@ Terminator in edlang_ir - Rust -
pub enum Terminator {
+    
pub enum Terminator {
     Target(usize),
     Return,
     SwitchInt {
@@ -17,7 +17,7 @@
 
§args: Vec<RValue>

The arguments.

§destination: Place

The place in memory to store the return value of the function call.

§target: Option<usize>

What basic block to jump to after the function call, if the function is non-diverging (i.e it returns control back).

-
§

Unreachable

Trait Implementations§

source§

impl Clone for Terminator

source§

fn clone(&self) -> Terminator

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 Terminator

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

§

Unreachable

Trait Implementations§

source§

impl Clone for Terminator

source§

fn clone(&self) -> Terminator

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 Terminator

source§

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

Formats the value using the given formatter. 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/edlang_ir/enum.TypeKind.html b/edlang_ir/enum.TypeKind.html index c5a3f7184..74d34bd7d 100644 --- a/edlang_ir/enum.TypeKind.html +++ b/edlang_ir/enum.TypeKind.html @@ -1,5 +1,5 @@ TypeKind in edlang_ir - Rust -

Enum edlang_ir::TypeKind

source ·
pub enum TypeKind {
+    

Enum edlang_ir::TypeKind

source ·
pub enum TypeKind {
     Unit,
     Bool,
     Char,
@@ -11,14 +11,14 @@
     Ptr(bool, Box<TypeInfo>),
     Ref(bool, Box<TypeInfo>),
     Struct(DefId),
-}

Variants§

§

Unit

§

Bool

§

Char

§

Int(IntTy)

§

Uint(UintTy)

§

Float(FloatTy)

§

FnDef(DefId, Vec<TypeInfo>)

§

Str

§

Ptr(bool, Box<TypeInfo>)

§

Ref(bool, Box<TypeInfo>)

§

Struct(DefId)

Implementations§

source§

impl TypeKind

source

pub const fn is_unit(&self) -> bool

source

pub const fn is_integer(&self) -> bool

source

pub fn get_falsy_value(&self) -> ValueTree

source§

impl TypeKind

source

pub fn get_i128() -> Self

source

pub fn get_i64() -> Self

source

pub fn get_i32() -> Self

source

pub fn get_i16() -> Self

source

pub fn get_i8() -> Self

source

pub fn get_u128() -> Self

source

pub fn get_u64() -> Self

source

pub fn get_u32() -> Self

source

pub fn get_u16() -> Self

source

pub fn get_u8() -> Self

source

pub fn get_f32() -> Self

source

pub fn get_f64() -> Self

source

pub fn get_bool() -> Self

source

pub fn get_char() -> Self

Trait Implementations§

source§

impl Clone for TypeKind

source§

fn clone(&self) -> TypeKind

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 TypeKind

source§

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

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

impl Display for TypeKind

source§

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

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

impl Ord for TypeKind

source§

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

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

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

Variants§

§

Unit

§

Bool

§

Char

§

Int(IntTy)

§

Uint(UintTy)

§

Float(FloatTy)

§

FnDef(DefId, Vec<TypeInfo>)

§

Str

§

Ptr(bool, Box<TypeInfo>)

§

Ref(bool, Box<TypeInfo>)

§

Struct(DefId)

Implementations§

source§

impl TypeKind

source

pub const fn is_unit(&self) -> bool

source

pub const fn is_integer(&self) -> bool

source

pub fn get_falsy_value(&self) -> ValueTree

source§

impl TypeKind

source

pub fn get_i128() -> Self

source

pub fn get_i64() -> Self

source

pub fn get_i32() -> Self

source

pub fn get_i16() -> Self

source

pub fn get_i8() -> Self

source

pub fn get_u128() -> Self

source

pub fn get_u64() -> Self

source

pub fn get_u32() -> Self

source

pub fn get_u16() -> Self

source

pub fn get_u8() -> Self

source

pub fn get_f32() -> Self

source

pub fn get_f64() -> Self

source

pub fn get_bool() -> Self

source

pub fn get_char() -> Self

Trait Implementations§

source§

impl Clone for TypeKind

source§

fn clone(&self) -> TypeKind

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 TypeKind

source§

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

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

impl Display for TypeKind

source§

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

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

impl Ord for TypeKind

source§

fn cmp(&self, other: &TypeKind) -> 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 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 - Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for TypeKind

source§

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

This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd,
Restrict a value to a certain interval. Read more
source§

impl PartialEq for TypeKind

source§

fn eq(&self, other: &TypeKind) -> 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 PartialOrd for TypeKind

source§

fn partial_cmp(&self, other: &TypeKind) -> 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 <= +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for TypeKind

source§

fn partial_cmp(&self, other: &TypeKind) -> 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 <= operator. 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 >= -operator. Read more
source§

impl Eq for TypeKind

source§

impl StructuralEq for TypeKind

source§

impl StructuralPartialEq for TypeKind

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +operator. Read more

source§

impl Eq for TypeKind

source§

impl StructuralEq for TypeKind

source§

impl StructuralPartialEq for TypeKind

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/edlang_ir/enum.UintTy.html b/edlang_ir/enum.UintTy.html index 9cccfe15f..a5a3970b1 100644 --- a/edlang_ir/enum.UintTy.html +++ b/edlang_ir/enum.UintTy.html @@ -1,19 +1,19 @@ UintTy in edlang_ir - Rust -

Enum edlang_ir::UintTy

source ·
pub enum UintTy {
+    

Enum edlang_ir::UintTy

source ·
pub enum UintTy {
     U128,
     U64,
     U32,
     U16,
     U8,
     Usize,
-}

Variants§

§

U128

§

U64

§

U32

§

U16

§

U8

§

Usize

Trait Implementations§

source§

impl Clone for UintTy

source§

fn clone(&self) -> UintTy

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 UintTy

source§

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

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

impl Ord for UintTy

source§

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

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

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

Variants§

§

U128

§

U64

§

U32

§

U16

§

U8

§

Usize

Trait Implementations§

source§

impl Clone for UintTy

source§

fn clone(&self) -> UintTy

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 UintTy

source§

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

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

impl Ord for UintTy

source§

fn cmp(&self, other: &UintTy) -> 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 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 - Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for UintTy

source§

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

This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd,
Restrict a value to a certain interval. Read more
source§

impl PartialEq for UintTy

source§

fn eq(&self, other: &UintTy) -> 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 PartialOrd for UintTy

source§

fn partial_cmp(&self, other: &UintTy) -> 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 <= +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for UintTy

source§

fn partial_cmp(&self, other: &UintTy) -> 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 <= operator. 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 >= -operator. Read more
source§

impl Copy for UintTy

source§

impl Eq for UintTy

source§

impl StructuralEq for UintTy

source§

impl StructuralPartialEq for UintTy

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +operator. Read more

source§

impl Copy for UintTy

source§

impl Eq for UintTy

source§

impl StructuralEq for UintTy

source§

impl StructuralPartialEq for UintTy

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/edlang_ir/enum.UnOp.html b/edlang_ir/enum.UnOp.html index 00c675115..25fbbbcd7 100644 --- a/edlang_ir/enum.UnOp.html +++ b/edlang_ir/enum.UnOp.html @@ -1,8 +1,8 @@ UnOp in edlang_ir - Rust -

Enum edlang_ir::UnOp

source ·
pub enum UnOp {
+    

Enum edlang_ir::UnOp

source ·
pub enum UnOp {
     Not,
     Neg,
-}

Variants§

§

Not

§

Neg

Trait Implementations§

source§

impl Clone for UnOp

source§

fn clone(&self) -> UnOp

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 UnOp

source§

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

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

impl Copy for UnOp

Auto Trait Implementations§

§

impl RefUnwindSafe for UnOp

§

impl Send for UnOp

§

impl Sync for UnOp

§

impl Unpin for UnOp

§

impl UnwindSafe for UnOp

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

Not

§

Neg

Trait Implementations§

source§

impl Clone for UnOp

source§

fn clone(&self) -> UnOp

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 UnOp

source§

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

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

impl Copy for UnOp

Auto Trait Implementations§

§

impl RefUnwindSafe for UnOp

§

impl Send for UnOp

§

impl Sync for UnOp

§

impl Unpin for UnOp

§

impl UnwindSafe for UnOp

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/edlang_ir/enum.ValueTree.html b/edlang_ir/enum.ValueTree.html index 3d6fc352b..0e5ac6965 100644 --- a/edlang_ir/enum.ValueTree.html +++ b/edlang_ir/enum.ValueTree.html @@ -1,8 +1,8 @@ ValueTree in edlang_ir - Rust -

Enum edlang_ir::ValueTree

source ·
pub enum ValueTree {
+    

Enum edlang_ir::ValueTree

source ·
pub enum ValueTree {
     Leaf(ConstValue),
     Branch(Vec<Self>),
-}

Variants§

§

Leaf(ConstValue)

§

Branch(Vec<Self>)

Implementations§

Trait Implementations§

source§

impl Clone for ValueTree

source§

fn clone(&self) -> ValueTree

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 ValueTree

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

Leaf(ConstValue)

§

Branch(Vec<Self>)

Implementations§

Trait Implementations§

source§

impl Clone for ValueTree

source§

fn clone(&self) -> ValueTree

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 ValueTree

source§

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

Formats the value using the given formatter. 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/edlang_ir/index.html b/edlang_ir/index.html index 7010d63df..3b427a66b 100644 --- a/edlang_ir/index.html +++ b/edlang_ir/index.html @@ -1,3 +1,3 @@ edlang_ir - Rust -
\ No newline at end of file +
\ No newline at end of file diff --git a/edlang_ir/struct.AdtBody.html b/edlang_ir/struct.AdtBody.html index bc0067a04..0ed6aad5e 100644 --- a/edlang_ir/struct.AdtBody.html +++ b/edlang_ir/struct.AdtBody.html @@ -1,12 +1,12 @@ AdtBody in edlang_ir - Rust -

Struct edlang_ir::AdtBody

source ·
pub struct AdtBody {
+    

Struct edlang_ir::AdtBody

source ·
pub struct AdtBody {
     pub def_id: DefId,
     pub is_pub: bool,
     pub name: String,
     pub variants: Vec<AdtVariant>,
     pub name_to_idx: HashMap<String, usize>,
     pub span: Span,
-}

Fields§

§def_id: DefId§is_pub: bool§name: String§variants: Vec<AdtVariant>§name_to_idx: HashMap<String, usize>§span: Span

Trait Implementations§

source§

impl Clone for AdtBody

source§

fn clone(&self) -> AdtBody

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 AdtBody

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§def_id: DefId§is_pub: bool§name: String§variants: Vec<AdtVariant>§name_to_idx: HashMap<String, usize>§span: Span

Trait Implementations§

source§

impl Clone for AdtBody

source§

fn clone(&self) -> AdtBody

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 AdtBody

source§

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

Formats the value using the given formatter. 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/edlang_ir/struct.AdtVariant.html b/edlang_ir/struct.AdtVariant.html index b6bb49633..e6f371843 100644 --- a/edlang_ir/struct.AdtVariant.html +++ b/edlang_ir/struct.AdtVariant.html @@ -1,10 +1,10 @@ AdtVariant in edlang_ir - Rust -

Struct edlang_ir::AdtVariant

source ·
pub struct AdtVariant {
+    

Struct edlang_ir::AdtVariant

source ·
pub struct AdtVariant {
     pub def_id: DefId,
     pub name: String,
     pub ty: TypeInfo,
 }
Expand description

struct field or enum variant

-

Fields§

§def_id: DefId§name: String§ty: TypeInfo

Trait Implementations§

source§

impl Clone for AdtVariant

source§

fn clone(&self) -> AdtVariant

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 AdtVariant

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Fields§

§def_id: DefId§name: String§ty: TypeInfo

Trait Implementations§

source§

impl Clone for AdtVariant

source§

fn clone(&self) -> AdtVariant

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 AdtVariant

source§

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

Formats the value using the given formatter. 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/edlang_ir/struct.BasicBlock.html b/edlang_ir/struct.BasicBlock.html index 7fd2aa392..4d9024514 100644 --- a/edlang_ir/struct.BasicBlock.html +++ b/edlang_ir/struct.BasicBlock.html @@ -1,9 +1,9 @@ BasicBlock in edlang_ir - Rust -

Struct edlang_ir::BasicBlock

source ·
pub struct BasicBlock {
+    

Struct edlang_ir::BasicBlock

source ·
pub struct BasicBlock {
     pub statements: SmallVec<[Statement; 8]>,
     pub terminator: Terminator,
     pub terminator_span: Option<Span>,
-}

Fields§

§statements: SmallVec<[Statement; 8]>§terminator: Terminator§terminator_span: Option<Span>

Trait Implementations§

source§

impl Clone for BasicBlock

source§

fn clone(&self) -> BasicBlock

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 BasicBlock

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§statements: SmallVec<[Statement; 8]>§terminator: Terminator§terminator_span: Option<Span>

Trait Implementations§

source§

impl Clone for BasicBlock

source§

fn clone(&self) -> BasicBlock

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 BasicBlock

source§

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

Formats the value using the given formatter. 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/edlang_ir/struct.Body.html b/edlang_ir/struct.Body.html index 7a321e479..145a342c2 100644 --- a/edlang_ir/struct.Body.html +++ b/edlang_ir/struct.Body.html @@ -1,4 +1,4 @@ -Body in edlang_ir - Rust +Body in edlang_ir - Rust

Struct edlang_ir::Body

source ·
pub struct Body {
     pub def_id: DefId,
     pub is_pub: bool,
@@ -7,7 +7,7 @@
     pub locals: SmallVec<[Local; 4]>,
     pub blocks: SmallVec<[BasicBlock; 8]>,
     pub fn_span: Span,
-}

Fields§

§def_id: DefId§is_pub: bool§is_extern: bool§name: String§locals: SmallVec<[Local; 4]>§blocks: SmallVec<[BasicBlock; 8]>§fn_span: Span

Implementations§

source§

impl Body

source

pub fn get_args(&self) -> SmallVec<[Local; 4]>

source

pub fn get_return_local(&self) -> Local

Trait Implementations§

source§

impl Clone for Body

source§

fn clone(&self) -> Body

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 Body

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Body

§

impl Send for Body

§

impl Sync for Body

§

impl Unpin for Body

§

impl UnwindSafe for Body

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§def_id: DefId§is_pub: bool§is_extern: bool§name: String§locals: SmallVec<[Local; 4]>§blocks: SmallVec<[BasicBlock; 8]>§fn_span: Span

Implementations§

source§

impl Body

source

pub fn get_args(&self) -> SmallVec<[Local; 4]>

source

pub fn get_return_local(&self) -> Local

source

pub fn get_mangled_name(&self) -> String

Trait Implementations§

source§

impl Clone for Body

source§

fn clone(&self) -> Body

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 Body

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Body

§

impl Send for Body

§

impl Sync for Body

§

impl Unpin for Body

§

impl UnwindSafe for Body

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/edlang_ir/struct.ConstData.html b/edlang_ir/struct.ConstData.html index 7f5ebfc14..516542b56 100644 --- a/edlang_ir/struct.ConstData.html +++ b/edlang_ir/struct.ConstData.html @@ -1,9 +1,9 @@ ConstData in edlang_ir - Rust -

Struct edlang_ir::ConstData

source ·
pub struct ConstData {
+    

Struct edlang_ir::ConstData

source ·
pub struct ConstData {
     pub span: Option<Span>,
     pub type_info: TypeInfo,
     pub kind: ConstKind,
-}

Fields§

§span: Option<Span>§type_info: TypeInfo§kind: ConstKind

Trait Implementations§

source§

impl Clone for ConstData

source§

fn clone(&self) -> ConstData

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 ConstData

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§span: Option<Span>§type_info: TypeInfo§kind: ConstKind

Trait Implementations§

source§

impl Clone for ConstData

source§

fn clone(&self) -> ConstData

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 ConstData

source§

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

Formats the value using the given formatter. 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/edlang_ir/struct.DebugInfo.html b/edlang_ir/struct.DebugInfo.html index 63e5e3c05..1e4da0d62 100644 --- a/edlang_ir/struct.DebugInfo.html +++ b/edlang_ir/struct.DebugInfo.html @@ -1,8 +1,8 @@ DebugInfo in edlang_ir - Rust -

Struct edlang_ir::DebugInfo

source ·
pub struct DebugInfo {
+    

Struct edlang_ir::DebugInfo

source ·
pub struct DebugInfo {
     pub id: usize,
     pub span: Span,
-}

Fields§

§id: usize§span: Span

Trait Implementations§

source§

impl Clone for DebugInfo

source§

fn clone(&self) -> DebugInfo

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 DebugInfo

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§id: usize§span: Span

Trait Implementations§

source§

impl Clone for DebugInfo

source§

fn clone(&self) -> DebugInfo

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 DebugInfo

source§

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

Formats the value using the given formatter. 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/edlang_ir/struct.Local.html b/edlang_ir/struct.Local.html index 95bbfacaf..6846eb326 100644 --- a/edlang_ir/struct.Local.html +++ b/edlang_ir/struct.Local.html @@ -1,17 +1,17 @@ Local in edlang_ir - Rust -

Struct edlang_ir::Local

source ·
pub struct Local {
+    

Struct edlang_ir::Local

source ·
pub struct Local {
     pub mutable: bool,
     pub span: Option<Span>,
     pub debug_name: Option<String>,
     pub ty: TypeInfo,
     pub kind: LocalKind,
-}

Fields§

§mutable: bool§span: Option<Span>§debug_name: Option<String>§ty: TypeInfo§kind: LocalKind

Implementations§

source§

impl Local

source

pub fn new( +}

Fields§

§mutable: bool§span: Option<Span>§debug_name: Option<String>§ty: TypeInfo§kind: LocalKind

Implementations§

source§

impl Local

source

pub fn new( span: Option<Span>, kind: LocalKind, ty: TypeInfo, debug_name: Option<String>, mutable: bool -) -> Self

source

pub const fn temp(ty: TypeKind) -> Self

Trait Implementations§

source§

impl Clone for Local

source§

fn clone(&self) -> Local

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 Local

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Local

§

impl Send for Local

§

impl Sync for Local

§

impl Unpin for Local

§

impl UnwindSafe for Local

Blanket Implementations§

source§

impl<T> Any for T
where +) -> Self

source

pub const fn temp(ty: TypeKind) -> Self

Trait Implementations§

source§

impl Clone for Local

source§

fn clone(&self) -> Local

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 Local

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Local

§

impl Send for Local

§

impl Sync for Local

§

impl Unpin for Local

§

impl UnwindSafe for Local

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/edlang_ir/struct.Place.html b/edlang_ir/struct.Place.html index f08ac8ce2..df2fd0769 100644 --- a/edlang_ir/struct.Place.html +++ b/edlang_ir/struct.Place.html @@ -1,8 +1,8 @@ Place in edlang_ir - Rust -

Struct edlang_ir::Place

source ·
pub struct Place {
+    

Struct edlang_ir::Place

source ·
pub struct Place {
     pub local: usize,
     pub projection: SmallVec<[PlaceElem; 1]>,
-}

Fields§

§local: usize§projection: SmallVec<[PlaceElem; 1]>

Trait Implementations§

source§

impl Clone for Place

source§

fn clone(&self) -> Place

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 Place

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Place

§

impl Send for Place

§

impl Sync for Place

§

impl Unpin for Place

§

impl UnwindSafe for Place

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§local: usize§projection: SmallVec<[PlaceElem; 1]>

Trait Implementations§

source§

impl Clone for Place

source§

fn clone(&self) -> Place

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 Place

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl RefUnwindSafe for Place

§

impl Send for Place

§

impl Sync for Place

§

impl Unpin for Place

§

impl UnwindSafe for Place

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/edlang_ir/struct.Statement.html b/edlang_ir/struct.Statement.html index efe1f70ae..df983af0f 100644 --- a/edlang_ir/struct.Statement.html +++ b/edlang_ir/struct.Statement.html @@ -1,8 +1,8 @@ Statement in edlang_ir - Rust -

Struct edlang_ir::Statement

source ·
pub struct Statement {
+    

Struct edlang_ir::Statement

source ·
pub struct Statement {
     pub span: Option<Span>,
     pub kind: StatementKind,
-}

Fields§

§span: Option<Span>§kind: StatementKind

Trait Implementations§

source§

impl Clone for Statement

source§

fn clone(&self) -> Statement

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 Statement

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§span: Option<Span>§kind: StatementKind

Trait Implementations§

source§

impl Clone for Statement

source§

fn clone(&self) -> Statement

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 Statement

source§

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

Formats the value using the given formatter. 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/edlang_ir/struct.SwitchTarget.html b/edlang_ir/struct.SwitchTarget.html index 2cd78bc3d..853de6836 100644 --- a/edlang_ir/struct.SwitchTarget.html +++ b/edlang_ir/struct.SwitchTarget.html @@ -1,9 +1,9 @@ SwitchTarget in edlang_ir - Rust -

Struct edlang_ir::SwitchTarget

source ·
pub struct SwitchTarget {
+    

Struct edlang_ir::SwitchTarget

source ·
pub struct SwitchTarget {
     pub values: Vec<ValueTree>,
     pub targets: Vec<usize>,
 }
Expand description

Used for ifs, match

-

Fields§

§values: Vec<ValueTree>§targets: Vec<usize>

Trait Implementations§

source§

impl Clone for SwitchTarget

source§

fn clone(&self) -> SwitchTarget

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 SwitchTarget

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Fields§

§values: Vec<ValueTree>§targets: Vec<usize>

Trait Implementations§

source§

impl Clone for SwitchTarget

source§

fn clone(&self) -> SwitchTarget

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 SwitchTarget

source§

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

Formats the value using the given formatter. 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/edlang_ir/struct.TypeInfo.html b/edlang_ir/struct.TypeInfo.html index b1cfc9bd2..4c9763bad 100644 --- a/edlang_ir/struct.TypeInfo.html +++ b/edlang_ir/struct.TypeInfo.html @@ -1,15 +1,15 @@ TypeInfo in edlang_ir - Rust -

Struct edlang_ir::TypeInfo

source ·
pub struct TypeInfo {
+    

Struct edlang_ir::TypeInfo

source ·
pub struct TypeInfo {
     pub span: Option<Span>,
     pub kind: TypeKind,
-}

Fields§

§span: Option<Span>§kind: TypeKind

Trait Implementations§

source§

impl Clone for TypeInfo

source§

fn clone(&self) -> TypeInfo

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 TypeInfo

source§

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

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

impl Ord for TypeInfo

source§

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

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

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

Fields§

§span: Option<Span>§kind: TypeKind

Trait Implementations§

source§

impl Clone for TypeInfo

source§

fn clone(&self) -> TypeInfo

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 TypeInfo

source§

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

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

impl Ord for TypeInfo

source§

fn cmp(&self, other: &TypeInfo) -> 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 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 - Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for TypeInfo

source§

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

This method tests for self and other values to be equal, and is used + Self: Sized + PartialOrd,
Restrict a value to a certain interval. Read more
source§

impl PartialEq for TypeInfo

source§

fn eq(&self, other: &TypeInfo) -> 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 PartialOrd for TypeInfo

source§

fn partial_cmp(&self, other: &TypeInfo) -> 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 <= +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for TypeInfo

source§

fn partial_cmp(&self, other: &TypeInfo) -> 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 <= operator. 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 >= -operator. Read more
source§

impl Eq for TypeInfo

source§

impl StructuralEq for TypeInfo

source§

impl StructuralPartialEq for TypeInfo

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +operator. Read more

source§

impl Eq for TypeInfo

source§

impl StructuralEq for TypeInfo

source§

impl StructuralPartialEq for TypeInfo

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/edlang_lowering/fn.lower_type.html b/edlang_lowering/fn.lower_type.html index f22df8a85..f74eb38ce 100644 --- a/edlang_lowering/fn.lower_type.html +++ b/edlang_lowering/fn.lower_type.html @@ -1,5 +1,5 @@ lower_type in edlang_lowering - Rust -
pub fn lower_type(
+    
pub fn lower_type(
     ctx: &BuildCtx,
     t: &Type,
     module_id: DefId
diff --git a/edlang_lowering/index.html b/edlang_lowering/index.html
index dee0c1ab5..bc8a2393a 100644
--- a/edlang_lowering/index.html
+++ b/edlang_lowering/index.html
@@ -1,3 +1,3 @@
 edlang_lowering - Rust
-    
\ No newline at end of file +
\ No newline at end of file diff --git a/edlang_parser/all.html b/edlang_parser/all.html index a218f95ed..524b660db 100644 --- a/edlang_parser/all.html +++ b/edlang_parser/all.html @@ -1,2 +1,2 @@ List of all items in this crate -
\ No newline at end of file +
\ No newline at end of file diff --git a/edlang_parser/fn.parse_ast.html b/edlang_parser/fn.parse_ast.html index e20210d97..ef68542b2 100644 --- a/edlang_parser/fn.parse_ast.html +++ b/edlang_parser/fn.parse_ast.html @@ -1,4 +1,4 @@ parse_ast in edlang_parser - Rust

Function edlang_parser::parse_ast

source ·
pub fn parse_ast(
     source: &str
-) -> Result<Module, ParseError<usize, Token, LexicalError>>
\ No newline at end of file +) -> Result<Vec<Module>, ParseError<usize, Token, LexicalError>>
\ No newline at end of file diff --git a/edlang_parser/grammar/grammar/__parse__Modules/struct.ModulesParser.html b/edlang_parser/grammar/grammar/__parse__Modules/struct.ModulesParser.html new file mode 100644 index 000000000..2555cbedd --- /dev/null +++ b/edlang_parser/grammar/grammar/__parse__Modules/struct.ModulesParser.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../../edlang_parser/grammar/grammar/struct.ModulesParser.html...

+ + + \ No newline at end of file diff --git a/edlang_parser/grammar/grammar/index.html b/edlang_parser/grammar/grammar/index.html index 6f03f4bde..401ad4580 100644 --- a/edlang_parser/grammar/grammar/index.html +++ b/edlang_parser/grammar/grammar/index.html @@ -1,2 +1,2 @@ edlang_parser::grammar::grammar - Rust -
\ No newline at end of file +
\ No newline at end of file diff --git a/edlang_parser/grammar/grammar/sidebar-items.js b/edlang_parser/grammar/grammar/sidebar-items.js index 0bde26f92..178bf08a6 100644 --- a/edlang_parser/grammar/grammar/sidebar-items.js +++ b/edlang_parser/grammar/grammar/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":["BinaryFirstLvlOpParser","BinarySecondLvlOpParser","BinaryThirdLvlOpParser","ModuleParser","PathSegmentsParser","UnaryOpParser"],"trait":["__ToTriple"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["BinaryFirstLvlOpParser","BinarySecondLvlOpParser","BinaryThirdLvlOpParser","ModuleParser","ModulesParser","PathSegmentsParser","UnaryOpParser"],"trait":["__ToTriple"]}; \ No newline at end of file diff --git a/edlang_parser/grammar/grammar/struct.BinaryFirstLvlOpParser.html b/edlang_parser/grammar/grammar/struct.BinaryFirstLvlOpParser.html index 581923540..af85efbe4 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 80bf058f4..92ca1f3e2 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 7d500f27d..1119204d9 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 00a911c0b..2c145b814 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.ModulesParser.html b/edlang_parser/grammar/grammar/struct.ModulesParser.html new file mode 100644 index 000000000..836da770d --- /dev/null +++ b/edlang_parser/grammar/grammar/struct.ModulesParser.html @@ -0,0 +1,15 @@ +ModulesParser in edlang_parser::grammar::grammar - Rust +
pub struct ModulesParser { /* private fields */ }

Implementations§

source§

impl ModulesParser

source

pub fn new() -> ModulesParser

source

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

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.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
\ No newline at end of file diff --git a/edlang_parser/grammar/grammar/struct.PathSegmentsParser.html b/edlang_parser/grammar/grammar/struct.PathSegmentsParser.html index 0361dcf13..694cc2c30 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 ae36a2d8b..e909a04a2 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 1ac0e9eba..9271e61c6 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 9844858de..613ef3fbe 100644 --- a/regex_syntax/ast/enum.ErrorKind.html +++ b/regex_syntax/ast/enum.ErrorKind.html @@ -115,7 +115,7 @@ returned. Some example syntaxes that are rejected include, but are 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 5ef587100..e3ac458ac 100644 --- a/regex_syntax/ast/struct.Error.html +++ b/regex_syntax/ast/struct.Error.html @@ -14,7 +14,7 @@ benefit from being able to point to two locations in the original 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 58d96e5db..8e4ad1a40 100644 --- a/regex_syntax/enum.Error.html +++ b/regex_syntax/enum.Error.html @@ -9,7 +9,7 @@ new variant is not considered a breaking change.

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 1acce24ed..d2e1c0cf8 100644 --- a/regex_syntax/hir/enum.ErrorKind.html +++ b/regex_syntax/hir/enum.ErrorKind.html @@ -26,7 +26,7 @@ crate feature is not enabled.

§

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 df4261ff8..06c50985e 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 381a935f9..4eb2a6cda 100644 --- a/search-index.js +++ b/search-index.js @@ -24,9 +24,9 @@ var searchIndex = new Map(JSON.parse('[\ ["edlang_check",{"doc":"","t":"H","n":["lowering_error_to_report"],"q":[[0,"edlang_check"],[1,"edlang_lowering::errors"],[2,"edlang_session"],[3,"alloc::string"],[4,"core::ops::range"],[5,"ariadne"]],"d":["Creates a report from a lowering error."],"i":[0],"f":[[[1,2],[[7,[[6,[3,[5,[4]]]]]]]]],"c":[],"p":[[6,"LoweringError",1],[5,"Session",2],[5,"String",3],[1,"usize"],[5,"Range",4],[1,"tuple"],[5,"Report",5]],"b":[]}],\ ["edlang_codegen_llvm",{"doc":"","t":"CHCHHH","n":["codegen","compile","linker","compile","link_binary","link_shared_lib"],"q":[[0,"edlang_codegen_llvm"],[3,"edlang_codegen_llvm::codegen"],[4,"edlang_codegen_llvm::linker"],[6,"edlang_session"],[7,"edlang_ir"],[8,"std::path"],[9,"core::error"],[10,"alloc::boxed"],[11,"core::result"],[12,"std::path"]],"d":["","","","","",""],"i":[0,0,0,0,0,0],"f":[0,[[1,2],[[6,[3,[5,[4]]]]]],0,[[1,2],[[6,[3,[5,[4]]]]]],[[7,7],[[6,[8,[5,[4]]]]]],[[7,7],[[6,[8,[5,[4]]]]]]],"c":[],"p":[[5,"Session",6],[5,"ProgramBody",7],[5,"PathBuf",8],[10,"Error",9],[5,"Box",10],[6,"Result",11],[5,"Path",8],[1,"tuple"]],"b":[]}],\ ["edlang_driver",{"doc":"","t":"FNNNNNNNNNNNNHNNNNN","n":["CompilerArgs","augment_args","augment_args_for_update","borrow","borrow_mut","command","command_for_update","fmt","from","from_arg_matches","from_arg_matches_mut","group_id","into","main","try_from","try_into","type_id","update_from_arg_matches","update_from_arg_matches_mut"],"q":[[0,"edlang_driver"],[19,"clap_builder::builder::command"],[20,"core::fmt"],[21,"core::fmt"],[22,"clap_builder"],[23,"core::result"],[24,"clap_builder::util::id"],[25,"core::option"],[26,"core::error"],[27,"alloc::boxed"],[28,"core::any"]],"d":["","","","","","","","","Returns the argument unchanged.","","","","Calls U::from(self).","","","","","",""],"i":[0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2],"f":[0,[1,1],[1,1],[-1,-2,[],[]],[-1,-2,[],[]],[[],1],[[],1],[[2,3],4],[-1,-1,[]],[5,[[7,[2,6]]]],[5,[[7,[2,6]]]],[[],[[9,[8]]]],[-1,-2,[],[]],[[],[[7,[10,[12,[11]]]]]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,13,[]],[[2,5],[[7,[10,6]]]],[[2,5],[[7,[10,6]]]]],"c":[],"p":[[5,"Command",19],[5,"CompilerArgs",0],[5,"Formatter",20],[8,"Result",20],[5,"ArgMatches",21],[8,"Error",22],[6,"Result",23],[5,"Id",24],[6,"Option",25],[1,"tuple"],[10,"Error",26],[5,"Box",27],[5,"TypeId",28]],"b":[]}],\ -["edlang_ir",{"doc":"","t":"PFFPPPFGPPPPFPPPPPPFGGPPFFPPPPPPPPPGPPPPPPPPPPPPPPPGPPPPFGPGPFPPPPPPGPFGFPGPPPPPPPFGPPPPPPFFPPGFGPPPPPPPPPPPGGPPPPPPGPONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONOONOOOOOOOOOOOOOOOONONNNNNNOOCOOOOOOOOOOOOOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOFNNNNNONNNNNNHNONHNNNN","n":["Add","AdtBody","AdtVariant","And","Arg","Assign","BasicBlock","BinOp","BinOp","BitAnd","BitOr","BitXor","Body","Bool","Bool","Branch","Call","Char","Char","ConstData","ConstKind","ConstValue","Constant","Copy","DebugInfo","DefId","Deref","Div","Eq","F32","F32","F64","F64","Field","Float","FloatTy","FnDef","Ge","Gt","I128","I128","I16","I16","I32","I32","I64","I64","I8","I8","Index","Int","IntTy","Isize","Isize","Le","Leaf","Local","LocalKind","LogicOp","LogicalOp","Lt","ModuleBody","Move","Mul","Ne","Neg","Not","Offset","Operand","Or","Place","PlaceElem","ProgramBody","Ptr","RValue","Ref","Ref","Rem","Return","ReturnPointer","Shl","Shr","Statement","StatementKind","StorageDead","StorageLive","Str","Struct","Sub","SwitchInt","SwitchTarget","SymbolTable","Target","Temp","Terminator","TypeInfo","TypeKind","U128","U128","U16","U16","U32","U32","U64","U64","U8","U8","Uint","UintTy","UnOp","UnOp","Unit","Unreachable","Use","Usize","Value","ValueTree","ZeroSized","blocks","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","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","cmp","cmp","cmp","cmp","cmp","cmp","constants","constants","debug_name","def_id","def_id","def_id","default","default","default","eq","eq","eq","eq","eq","eq","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","fn_span","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","function_signatures","functions","functions","functions","get_args","get_bool","get_char","get_f32","get_f64","get_falsy_value","get_i128","get_i16","get_i32","get_i64","get_i8","get_return_local","get_type","get_u128","get_u16","get_u32","get_u64","get_u8","hash","id","id","imports","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","is_extern","is_integer","is_pub","is_pub","is_unit","kind","kind","kind","kind","local","locals","module_id","modules","modules","modules","mutable","name","name","name","name","name_to_idx","new","parent_ids","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","program_id","projection","scalar_int","span","span","span","span","span","span","span","statements","structs","structs","structs","symbols","symbols","targets","temp","terminator","terminator_span","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","top_level_module_names","top_level_modules","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","ty","ty","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_info","types","types","values","variants","field_idx","local","args","destination","discriminator","func","target","targets","ScalarInt","borrow","borrow_mut","clone","clone_into","cmp","data","eq","fmt","from","hash","into","partial_cmp","sign_extend","size","size","to_owned","truncate","try_from","try_from_int","try_into","type_id"],"q":[[0,"edlang_ir"],[568,"edlang_ir::PlaceElem"],[570,"edlang_ir::Terminator"],[576,"edlang_ir::scalar_int"],[598,"core::cmp"],[599,"core::fmt"],[600,"core::fmt"],[601,"core::hash"],[602,"edlang_span"],[603,"core::option"],[604,"alloc::string"],[605,"core::result"],[606,"core::any"],[607,"core::convert"]],"d":["","","struct field or enum variant","","","","","","","","","","","","","","","","","","","","","","","Definition id.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Used for ifs, match","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constants defined in this module.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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.","The function signatures.","","This stores all the functions from all modules","Functions defined in this module.","","","","","","","","","","","","","","","","","","","","","","Imported items. symbol -> id","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).","","","","","","","","","","","","","","All the modules in a flat map.","Submodules defined in this module.","","","","","","","","","","","","","","","","","","","","","","","","","","","","Structs defined in this module.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The top level modules.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Types defined in this module.","","","","","The arguments.","The place in memory to store the return value of the …","","The function to call.","What basic block to jump to after the function call, if …","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","Size in bytes","Size in bytes","","Truncates value to self bits.","","","",""],"i":[28,0,0,29,11,13,0,0,24,28,28,28,0,17,31,23,14,17,31,0,0,0,25,25,0,0,27,28,28,20,31,20,31,27,17,0,17,28,28,18,31,18,31,18,31,18,31,18,31,27,17,0,18,31,28,23,0,0,24,0,28,0,25,28,28,30,30,28,0,29,0,0,0,17,0,17,24,28,14,11,28,28,0,0,13,13,17,17,28,14,0,0,14,11,0,0,0,19,31,19,31,19,31,19,31,19,31,17,0,0,24,17,14,24,19,22,0,22,5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,4,16,17,18,19,20,1,3,10,5,6,7,1,2,4,4,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,2,1,2,3,5,17,17,17,17,17,17,17,17,17,17,5,23,17,17,17,17,17,4,4,8,3,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,5,17,5,6,17,10,12,16,21,26,5,3,1,2,3,10,3,5,6,7,6,10,3,4,16,17,18,19,20,4,26,0,3,6,8,10,12,16,21,9,1,2,3,1,3,15,10,9,9,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,17,2,2,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,7,10,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,21,1,3,15,6,50,51,52,52,53,52,52,53,0,45,45,45,45,45,45,45,45,45,45,45,45,0,45,45,45,0,45,45,45,45],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24],[25,25],[26,26],[27,27],[28,28],[29,29],[30,30],[31,31],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[4,4],33],[[16,16],33],[[17,17],33],[[18,18],33],[[19,19],33],[[20,20],33],0,0,0,0,0,0,[[],1],[[],2],[[],4],[[4,4],34],[[16,16],34],[[17,17],34],[[18,18],34],[[19,19],34],[[20,20],34],[[1,35],36],[[2,35],36],[[3,35],36],[[4,35],36],[[5,35],36],[[6,35],36],[[7,35],36],[[8,35],36],[[9,35],36],[[10,35],36],[[11,35],36],[[12,35],36],[[13,35],36],[[14,35],36],[[15,35],36],[[16,35],36],[[17,35],36],[[17,35],36],[[18,35],36],[[19,35],36],[[20,35],36],[[21,35],36],[[22,35],36],[[23,35],36],[[24,35],36],[[25,35],36],[[26,35],36],[[27,35],36],[[28,35],36],[[29,35],36],[[30,35],36],[[31,35],36],0,[-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,[]],0,0,0,0,[5,[[38,[[37,[10]]]]]],[[],17],[[],17],[[],17],[[],17],[17,23],[[],17],[[],17],[[],17],[[],17],[[],17],[5,10],[23,17],[[],17],[[],17],[[],17],[[],17],[[],17],[[4,-1],32,39],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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[17,34],0,0,[17,34],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[41,[40]],11,16,[41,[42]],34],10],0,[[4,4],[[41,[33]]]],[[16,16],[[41,[33]]]],[[17,17],[[41,[33]]]],[[18,18],[[41,[33]]]],[[19,19],[[41,[33]]]],[[20,20],[[41,[33]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[17,10],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,42,[]],0,0,[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],0,0,[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[45,45],[[-1,-2],32,[],[]],[[45,45],33],0,[[45,45],34],[[45,35],36],[-1,-1,[]],[[45,-1],32,39],[-1,-2,[],[]],[[45,45],[[41,[33]]]],[[46,47],47],[45,46],0,[-1,-2,[],[]],[[46,47],47],[-1,[[43,[-2]]],[],[]],[[-1,46],[[41,[45]]],[[49,[48]]]],[-1,[[43,[-2]]],[],[]],[-1,44,[]]],"c":[],"p":[[5,"SymbolTable",0],[5,"ProgramBody",0],[5,"ModuleBody",0],[5,"DefId",0],[5,"Body",0],[5,"AdtBody",0],[5,"AdtVariant",0],[5,"DebugInfo",0],[5,"BasicBlock",0],[5,"Local",0],[6,"LocalKind",0],[5,"Statement",0],[6,"StatementKind",0],[6,"Terminator",0],[5,"SwitchTarget",0],[5,"TypeInfo",0],[6,"TypeKind",0],[6,"IntTy",0],[6,"UintTy",0],[6,"FloatTy",0],[5,"ConstData",0],[6,"ConstKind",0],[6,"ValueTree",0],[6,"RValue",0],[6,"Operand",0],[5,"Place",0],[6,"PlaceElem",0],[6,"BinOp",0],[6,"LogicalOp",0],[6,"UnOp",0],[6,"ConstValue",0],[1,"tuple"],[6,"Ordering",598],[1,"bool"],[5,"Formatter",599],[8,"Result",599],[1,"array"],[5,"SmallVec",600],[10,"Hasher",601],[5,"Span",602],[6,"Option",603],[5,"String",604],[6,"Result",605],[5,"TypeId",606],[5,"ScalarInt",576],[1,"u64"],[1,"u128"],[1,"i128"],[10,"Into",607],[15,"Field",568],[15,"Index",568],[15,"Call",570],[15,"SwitchInt",570]],"b":[[280,"impl-Debug-for-TypeKind"],[281,"impl-Display-for-TypeKind"]]}],\ +["edlang_ir",{"doc":"","t":"PFFPPPFGPPPPFPPPPPPFGGPPFFPPPPPPPPPGPPPPPPPPPPPPPPPGPPPPFGPGPFPPPPPPGPFGFPGPPPPPPPFGPPPPPPFFPPGFGPPPPPPPPPPPGGPPPPPPGPONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONOONOOOOOOOOOOOOOOOONONNNNNNOOCOOOOOOOOOOOOOONOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOFNNNNNONNNNNNHNONHNNNN","n":["Add","AdtBody","AdtVariant","And","Arg","Assign","BasicBlock","BinOp","BinOp","BitAnd","BitOr","BitXor","Body","Bool","Bool","Branch","Call","Char","Char","ConstData","ConstKind","ConstValue","Constant","Copy","DebugInfo","DefId","Deref","Div","Eq","F32","F32","F64","F64","Field","Float","FloatTy","FnDef","Ge","Gt","I128","I128","I16","I16","I32","I32","I64","I64","I8","I8","Index","Int","IntTy","Isize","Isize","Le","Leaf","Local","LocalKind","LogicOp","LogicalOp","Lt","ModuleBody","Move","Mul","Ne","Neg","Not","Offset","Operand","Or","Place","PlaceElem","ProgramBody","Ptr","RValue","Ref","Ref","Rem","Return","ReturnPointer","Shl","Shr","Statement","StatementKind","StorageDead","StorageLive","Str","Struct","Sub","SwitchInt","SwitchTarget","SymbolTable","Target","Temp","Terminator","TypeInfo","TypeKind","U128","U128","U16","U16","U32","U32","U64","U64","U8","U8","Uint","UintTy","UnOp","UnOp","Unit","Unreachable","Use","Usize","Value","ValueTree","ZeroSized","blocks","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","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","cmp","cmp","cmp","cmp","cmp","cmp","constants","constants","debug_name","def_id","def_id","def_id","default","default","default","eq","eq","eq","eq","eq","eq","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","fn_span","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","function_signatures","functions","functions","functions","get_args","get_bool","get_char","get_f32","get_f64","get_falsy_value","get_i128","get_i16","get_i32","get_i64","get_i8","get_mangled_name","get_return_local","get_type","get_u128","get_u16","get_u32","get_u64","get_u8","hash","id","id","imports","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","is_extern","is_integer","is_pub","is_pub","is_unit","kind","kind","kind","kind","local","locals","module_id","modules","modules","modules","mutable","name","name","name","name","name_to_idx","new","parent_ids","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","program_id","projection","scalar_int","span","span","span","span","span","span","span","statements","structs","structs","structs","symbols","symbols","targets","temp","terminator","terminator_span","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","top_level_module_names","top_level_modules","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","ty","ty","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_info","types","types","values","variants","field_idx","local","args","destination","discriminator","func","target","targets","ScalarInt","borrow","borrow_mut","clone","clone_into","cmp","data","eq","fmt","from","hash","into","partial_cmp","sign_extend","size","size","to_owned","truncate","try_from","try_from_int","try_into","type_id"],"q":[[0,"edlang_ir"],[569,"edlang_ir::PlaceElem"],[571,"edlang_ir::Terminator"],[577,"edlang_ir::scalar_int"],[599,"core::cmp"],[600,"core::fmt"],[601,"core::fmt"],[602,"alloc::string"],[603,"core::hash"],[604,"edlang_span"],[605,"core::option"],[606,"core::result"],[607,"core::any"],[608,"core::convert"]],"d":["","","struct field or enum variant","","","","","","","","","","","","","","","","","","","","","","","Definition id.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Used for ifs, match","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constants defined in this module.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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.","The function signatures.","","This stores all the functions from all modules","Functions defined in this module.","","","","","","","","","","","","","","","","","","","","","","","Imported items. symbol -> id","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).","","","","","","","","","","","","","","All the modules in a flat map.","Submodules defined in this module.","","","","","","","","","","","","","","","","","","","","","","","","","","","","Structs defined in this module.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The top level modules.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Types defined in this module.","","","","","The arguments.","The place in memory to store the return value of the …","","The function to call.","What basic block to jump to after the function call, if …","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","Size in bytes","Size in bytes","","Truncates value to self bits.","","","",""],"i":[28,0,0,29,11,13,0,0,24,28,28,28,0,17,31,23,14,17,31,0,0,0,25,25,0,0,27,28,28,20,31,20,31,27,17,0,17,28,28,18,31,18,31,18,31,18,31,18,31,27,17,0,18,31,28,23,0,0,24,0,28,0,25,28,28,30,30,28,0,29,0,0,0,17,0,17,24,28,14,11,28,28,0,0,13,13,17,17,28,14,0,0,14,11,0,0,0,19,31,19,31,19,31,19,31,19,31,17,0,0,24,17,14,24,19,22,0,22,5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,4,16,17,18,19,20,1,3,10,5,6,7,1,2,4,4,16,17,18,19,20,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,2,1,2,3,5,17,17,17,17,17,17,17,17,17,17,5,5,23,17,17,17,17,17,4,4,8,3,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,5,17,5,6,17,10,12,16,21,26,5,3,1,2,3,10,3,5,6,7,6,10,3,4,16,17,18,19,20,4,26,0,3,6,8,10,12,16,21,9,1,2,3,1,3,15,10,9,9,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,17,2,2,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,7,10,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,21,1,3,15,6,50,51,52,52,53,52,52,53,0,45,45,45,45,45,45,45,45,45,45,45,45,0,45,45,45,0,45,45,45,45],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[13,13],[14,14],[15,15],[16,16],[17,17],[18,18],[19,19],[20,20],[21,21],[22,22],[23,23],[24,24],[25,25],[26,26],[27,27],[28,28],[29,29],[30,30],[31,31],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[-1,-2],32,[],[]],[[4,4],33],[[16,16],33],[[17,17],33],[[18,18],33],[[19,19],33],[[20,20],33],0,0,0,0,0,0,[[],1],[[],2],[[],4],[[4,4],34],[[16,16],34],[[17,17],34],[[18,18],34],[[19,19],34],[[20,20],34],[[1,35],36],[[2,35],36],[[3,35],36],[[4,35],36],[[5,35],36],[[6,35],36],[[7,35],36],[[8,35],36],[[9,35],36],[[10,35],36],[[11,35],36],[[12,35],36],[[13,35],36],[[14,35],36],[[15,35],36],[[16,35],36],[[17,35],36],[[17,35],36],[[18,35],36],[[19,35],36],[[20,35],36],[[21,35],36],[[22,35],36],[[23,35],36],[[24,35],36],[[25,35],36],[[26,35],36],[[27,35],36],[[28,35],36],[[29,35],36],[[30,35],36],[[31,35],36],0,[-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,[]],0,0,0,0,[5,[[38,[[37,[10]]]]]],[[],17],[[],17],[[],17],[[],17],[17,23],[[],17],[[],17],[[],17],[[],17],[[],17],[5,39],[5,10],[23,17],[[],17],[[],17],[[],17],[[],17],[[],17],[[4,-1],32,40],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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[17,34],0,0,[17,34],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[42,[41]],11,16,[42,[39]],34],10],0,[[4,4],[[42,[33]]]],[[16,16],[[42,[33]]]],[[17,17],[[42,[33]]]],[[18,18],[[42,[33]]]],[[19,19],[[42,[33]]]],[[20,20],[[42,[33]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[17,10],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,39,[]],0,0,[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],[-1,[[43,[-2]]],[],[]],0,0,[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],[-1,44,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[45,45],[[-1,-2],32,[],[]],[[45,45],33],0,[[45,45],34],[[45,35],36],[-1,-1,[]],[[45,-1],32,40],[-1,-2,[],[]],[[45,45],[[42,[33]]]],[[46,47],47],[45,46],0,[-1,-2,[],[]],[[46,47],47],[-1,[[43,[-2]]],[],[]],[[-1,46],[[42,[45]]],[[49,[48]]]],[-1,[[43,[-2]]],[],[]],[-1,44,[]]],"c":[],"p":[[5,"SymbolTable",0],[5,"ProgramBody",0],[5,"ModuleBody",0],[5,"DefId",0],[5,"Body",0],[5,"AdtBody",0],[5,"AdtVariant",0],[5,"DebugInfo",0],[5,"BasicBlock",0],[5,"Local",0],[6,"LocalKind",0],[5,"Statement",0],[6,"StatementKind",0],[6,"Terminator",0],[5,"SwitchTarget",0],[5,"TypeInfo",0],[6,"TypeKind",0],[6,"IntTy",0],[6,"UintTy",0],[6,"FloatTy",0],[5,"ConstData",0],[6,"ConstKind",0],[6,"ValueTree",0],[6,"RValue",0],[6,"Operand",0],[5,"Place",0],[6,"PlaceElem",0],[6,"BinOp",0],[6,"LogicalOp",0],[6,"UnOp",0],[6,"ConstValue",0],[1,"tuple"],[6,"Ordering",599],[1,"bool"],[5,"Formatter",600],[8,"Result",600],[1,"array"],[5,"SmallVec",601],[5,"String",602],[10,"Hasher",603],[5,"Span",604],[6,"Option",605],[6,"Result",606],[5,"TypeId",607],[5,"ScalarInt",577],[1,"u64"],[1,"u128"],[1,"i128"],[10,"Into",608],[15,"Field",569],[15,"Index",569],[15,"Call",571],[15,"SwitchInt",571]],"b":[[280,"impl-Display-for-TypeKind"],[281,"impl-Debug-for-TypeKind"]]}],\ ["edlang_lowering",{"doc":"","t":"CHHPPPPGPPPPNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOO","n":["errors","lower_modules","lower_type","BorrowNotMutable","FunctionNotFound","IdNotFound","ImportNotFound","LoweringError","ModuleNotFound","NotYetImplemented","UnexpectedType","UnrecognizedType","borrow","borrow_mut","clone","clone_into","fmt","fmt","from","into","to_owned","to_string","try_from","try_into","type_id","expected","found","function","id","import_span","message","module","module_span","name","name","span","span","span","span","span","span","span","symbol","type_span"],"q":[[0,"edlang_lowering"],[3,"edlang_lowering::errors"],[25,"edlang_lowering::errors::LoweringError"],[44,"edlang_ast"],[45,"edlang_ir"],[46,"core::result"],[47,"edlang_ast"],[48,"core::fmt"],[49,"core::any"]],"d":["","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,4,4,4,4,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,14,14,15,16,17,18,19,17,20,21,19,15,20,21,16,18,14,17,20],"f":[0,[[[2,[1]]],[[5,[3,4]]]],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[4,4],[[-1,-2],9,[],[]],[[4,10],11],[[4,10],11],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,12,[]],[-1,[[5,[-2]]],[],[]],[-1,[[5,[-2]]],[],[]],[-1,13,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"c":[],"p":[[5,"Module",44],[1,"slice"],[5,"ProgramBody",45],[6,"LoweringError",3],[6,"Result",46],[5,"Type",44],[5,"DefId",45],[5,"TypeInfo",45],[1,"tuple"],[5,"Formatter",47],[8,"Result",47],[5,"String",48],[5,"TypeId",49],[15,"UnexpectedType",25],[15,"FunctionNotFound",25],[15,"IdNotFound",25],[15,"ImportNotFound",25],[15,"NotYetImplemented",25],[15,"ModuleNotFound",25],[15,"BorrowNotMutable",25],[15,"UnrecognizedType",25]],"b":[[16,"impl-Display-for-LoweringError"],[17,"impl-Debug-for-LoweringError"]]}],\ -["edlang_parser",{"doc":"","t":"CHCCHHCIPPPPPOOOOOOOCFFFFFFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNPPFGPINNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPGPPPPPPPPPPPPPPPPPPPPPPPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["error","error_to_report","grammar","lexer","parse_ast","print_report","tokens","Error","ExtraToken","InvalidToken","UnrecognizedEof","UnrecognizedToken","User","error","expected","expected","location","location","token","token","grammar","BinaryFirstLvlOpParser","BinarySecondLvlOpParser","BinaryThirdLvlOpParser","ModuleParser","PathSegmentsParser","UnaryOpParser","__ToTriple","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","from","from","from","from","from","from","into","into","into","into","into","into","new","new","new","new","new","new","parse","parse","parse","parse","parse","parse","to_triple","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","Err","InvalidToken","Lexer","LexicalError","Ok","Spanned","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","from","from","into","into","into_iter","new","next","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","Arrow","Assign","Boolean","Colon","Coma","Dot","DoubleColon","Identifier","Integer","KeywordConst","KeywordElse","KeywordExtern","KeywordFn","KeywordFor","KeywordIf","KeywordIn","KeywordLet","KeywordMatch","KeywordMod","KeywordMut","KeywordPub","KeywordReturn","KeywordStruct","KeywordUse","KeywordWhile","LeftBracket","LeftParen","LeftSquareBracket","LessThanEqSign","LessThanSign","LexingError","MoreThanEqSign","MoreThanSign","NumberParseError","OperatorAdd","OperatorAnd","OperatorBitwiseAnd","OperatorBitwiseNot","OperatorBitwiseOr","OperatorBitwiseXor","OperatorDiv","OperatorEq","OperatorMul","OperatorNe","OperatorNot","OperatorOr","OperatorRem","OperatorSub","Other","RightBracket","RightParen","RightSquareBracket","Semicolon","String","Token","TwoDots","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","eq","eq","fmt","fmt","from","from","from","from","into","into","lex","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"edlang_parser"],[7,"edlang_parser::error"],[13,"edlang_parser::error::Error"],[20,"edlang_parser::grammar"],[21,"edlang_parser::grammar::grammar"],[83,"edlang_parser::lexer"],[112,"edlang_parser::tokens"],[196,"core::ops::range"],[197,"ariadne"],[198,"std::io::error"],[199,"core::result"],[200,"edlang_ast"],[201,"lalrpop_util"],[202,"edlang_ast"],[203,"edlang_ast"],[204,"edlang_ast"],[205,"core::fmt"],[206,"core::fmt"],[207,"alloc::string"],[208,"core::num::error"],[209,"core::convert"],[210,"logos::lexer"]],"d":["","","","","","","","","Generated by the parser when it encounters additional, …","Generated by the parser when it encounters a token (or …","Generated by the parser when it encounters an EOF it did …","Generated by the parser when it encounters a token it did …","Custom error type.","","The set of expected tokens: these names are taken from the …","The set of expected tokens: these names are taken from the …","","The end of the final token","The unexpected token of type T with a span given by the …","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Contains the error value","","","","Contains the success value","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,2,2,2,2,2,37,38,39,40,38,39,41,0,0,0,0,0,0,0,0,13,14,15,16,17,18,13,14,15,16,17,18,13,14,15,16,17,18,13,14,15,16,17,18,13,14,15,16,17,18,13,14,15,16,17,18,20,13,14,15,16,17,18,13,14,15,16,17,18,13,14,15,16,17,18,42,11,0,0,42,0,29,11,29,11,11,11,11,11,29,11,29,11,29,29,29,11,11,29,11,29,11,29,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,10,10,32,10,10,10,10,10,10,10,10,10,10,10,10,10,10,32,10,10,10,10,10,0,10,32,10,32,10,32,10,32,10,32,32,10,32,10,32,32,32,10,32,10,10,32,10,32,10,32,10,32,10],"f":[0,[[1,2],[[8,[[6,[[5,[1,[4,[3]]]]]],7]]]],0,0,[1,[[8,[9,[12,[3,10,11]]]]]],[[1,1,[6,[[5,[1,[4,[3]]]]]]],[[8,[5,7]]]],0,0,0,0,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,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],13],[[],14],[[],15],[[],16],[[],17],[[],18],[[13,-2],[[8,[19,[12,[3,10,11]]]]],20,[[22,[],[[21,[-1]]]]]],[[14,-2],[[8,[19,[12,[3,10,11]]]]],20,[[22,[],[[21,[-1]]]]]],[[15,-2],[[8,[19,[12,[3,10,11]]]]],20,[[22,[],[[21,[-1]]]]]],[[16,-2],[[8,[9,[12,[3,10,11]]]]],20,[[22,[],[[21,[-1]]]]]],[[17,-2],[[8,[[24,[23]],[12,[3,10,11]]]]],20,[[22,[],[[21,[-1]]]]]],[[18,-2],[[8,[25,[12,[3,10,11]]]]],20,[[22,[],[[21,[-1]]]]]],[20,[[8,[[5,[3,10,3]],[12,[3,10,11]]]]]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],[-1,26,[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[11,11],[[-1,-2],5,[],[]],[[11,27],28],[[11,27],28],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,29],[29,[[30,[-1]]],[]],[-1,-2,[],[]],[-1,31,[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,26,[]],[-1,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,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[32,32],[10,10],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[],32],[[32,32],33],[[10,10],33],[[32,27],28],[[10,27],28],[34,32],[-1,-1,[]],[35,32],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[36,[10]]],5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,26,[]],[-1,26,[]]],"c":[],"p":[[1,"str"],[8,"Error",7],[1,"usize"],[5,"Range",196],[1,"tuple"],[5,"Report",197],[5,"Error",198],[6,"Result",199],[5,"Module",200],[6,"Token",112],[6,"LexicalError",83],[6,"ParseError",201],[5,"BinaryFirstLvlOpParser",21],[5,"BinarySecondLvlOpParser",21],[5,"BinaryThirdLvlOpParser",21],[5,"ModuleParser",21],[5,"PathSegmentsParser",21],[5,"UnaryOpParser",21],[6,"BinaryOp",200],[10,"__ToTriple",21],[17,"Item"],[10,"IntoIterator",202],[6,"PathSegment",200],[5,"Vec",203],[6,"UnaryOp",200],[5,"TypeId",204],[5,"Formatter",205],[8,"Result",205],[5,"Lexer",83],[6,"Option",206],[5,"String",207],[6,"LexingError",112],[1,"bool"],[5,"ParseIntError",208],[6,"Infallible",209],[5,"Lexer",210],[15,"User",13],[15,"UnrecognizedEof",13],[15,"UnrecognizedToken",13],[15,"InvalidToken",13],[15,"ExtraToken",13],[8,"Spanned",83]],"b":[[95,"impl-Display-for-LexicalError"],[96,"impl-Debug-for-LexicalError"],[181,"impl-From%3CParseIntError%3E-for-LexingError"],[183,"impl-From%3CInfallible%3E-for-LexingError"]]}],\ +["edlang_parser",{"doc":"","t":"CHCCHHCIPPPPPOOOOOOOCFFFFFFFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNPPFGPINNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPGPPPPPPPPPPPPPPPPPPPPPPPGPNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["error","error_to_report","grammar","lexer","parse_ast","print_report","tokens","Error","ExtraToken","InvalidToken","UnrecognizedEof","UnrecognizedToken","User","error","expected","expected","location","location","token","token","grammar","BinaryFirstLvlOpParser","BinarySecondLvlOpParser","BinaryThirdLvlOpParser","ModuleParser","ModulesParser","PathSegmentsParser","UnaryOpParser","__ToTriple","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","from","from","from","from","from","from","from","into","into","into","into","into","into","into","new","new","new","new","new","new","new","parse","parse","parse","parse","parse","parse","parse","to_triple","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","Err","InvalidToken","Lexer","LexicalError","Ok","Spanned","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","from","from","into","into","into_iter","new","next","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","Arrow","Assign","Boolean","Colon","Coma","Dot","DoubleColon","Identifier","Integer","KeywordConst","KeywordElse","KeywordExtern","KeywordFn","KeywordFor","KeywordIf","KeywordIn","KeywordLet","KeywordMatch","KeywordMod","KeywordMut","KeywordPub","KeywordReturn","KeywordStruct","KeywordUse","KeywordWhile","LeftBracket","LeftParen","LeftSquareBracket","LessThanEqSign","LessThanSign","LexingError","MoreThanEqSign","MoreThanSign","NumberParseError","OperatorAdd","OperatorAnd","OperatorBitwiseAnd","OperatorBitwiseNot","OperatorBitwiseOr","OperatorBitwiseXor","OperatorDiv","OperatorEq","OperatorMul","OperatorNe","OperatorNot","OperatorOr","OperatorRem","OperatorSub","Other","RightBracket","RightParen","RightSquareBracket","Semicolon","String","Token","TwoDots","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","eq","eq","fmt","fmt","from","from","from","from","into","into","lex","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"edlang_parser"],[7,"edlang_parser::error"],[13,"edlang_parser::error::Error"],[20,"edlang_parser::grammar"],[21,"edlang_parser::grammar::grammar"],[93,"edlang_parser::lexer"],[122,"edlang_parser::tokens"],[206,"core::ops::range"],[207,"ariadne"],[208,"std::io::error"],[209,"core::result"],[210,"edlang_ast"],[211,"alloc::vec"],[212,"lalrpop_util"],[213,"edlang_ast"],[214,"edlang_ast"],[215,"core::fmt"],[216,"core::fmt"],[217,"alloc::string"],[218,"core::num::error"],[219,"core::convert"],[220,"logos::lexer"]],"d":["","","","","","","","","Generated by the parser when it encounters additional, …","Generated by the parser when it encounters a token (or …","Generated by the parser when it encounters an EOF it did …","Generated by the parser when it encounters a token it did …","Custom error type.","","The set of expected tokens: these names are taken from the …","The set of expected tokens: these names are taken from the …","","The end of the final token","The unexpected token of type T with a span given by the …","","","","","","","","","","","","","","","","","","","","","","","","","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.","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).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Contains the error value","","","","Contains the success value","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,2,2,2,2,2,38,39,40,41,39,40,42,0,0,0,0,0,0,0,0,0,14,15,16,17,18,19,20,14,15,16,17,18,19,20,14,15,16,17,18,19,20,14,15,16,17,18,19,20,14,15,16,17,18,19,20,14,15,16,17,18,19,20,22,14,15,16,17,18,19,20,14,15,16,17,18,19,20,14,15,16,17,18,19,20,43,12,0,0,43,0,30,12,30,12,12,12,12,12,30,12,30,12,30,30,30,12,12,30,12,30,12,30,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,33,11,11,11,11,11,11,11,11,11,11,11,11,11,11,33,11,11,11,11,11,0,11,33,11,33,11,33,11,33,11,33,33,11,33,11,33,33,33,11,33,11,11,33,11,33,11,33,11,33,11],"f":[0,[[1,2],[[8,[[6,[[5,[1,[4,[3]]]]]],7]]]],0,0,[1,[[8,[[10,[9]],[13,[3,11,12]]]]]],[[1,1,[6,[[5,[1,[4,[3]]]]]]],[[8,[5,7]]]],0,0,0,0,0,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,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],14],[[],15],[[],16],[[],17],[[],18],[[],19],[[],20],[[14,-2],[[8,[21,[13,[3,11,12]]]]],22,[[24,[],[[23,[-1]]]]]],[[15,-2],[[8,[21,[13,[3,11,12]]]]],22,[[24,[],[[23,[-1]]]]]],[[16,-2],[[8,[21,[13,[3,11,12]]]]],22,[[24,[],[[23,[-1]]]]]],[[17,-2],[[8,[9,[13,[3,11,12]]]]],22,[[24,[],[[23,[-1]]]]]],[[18,-2],[[8,[[10,[9]],[13,[3,11,12]]]]],22,[[24,[],[[23,[-1]]]]]],[[19,-2],[[8,[[10,[25]],[13,[3,11,12]]]]],22,[[24,[],[[23,[-1]]]]]],[[20,-2],[[8,[26,[13,[3,11,12]]]]],22,[[24,[],[[23,[-1]]]]]],[22,[[8,[[5,[3,11,3]],[13,[3,11,12]]]]]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[12,12],[[-1,-2],5,[],[]],[[12,28],29],[[12,28],29],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,30],[30,[[31,[-1]]],[]],[-1,-2,[],[]],[-1,32,[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,27,[]],[-1,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,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[33,33],[11,11],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[],33],[[33,33],34],[[11,11],34],[[33,28],29],[[11,28],29],[35,33],[-1,-1,[]],[36,33],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[37,[11]]],5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,[[8,[-2]]],[],[]],[-1,27,[]],[-1,27,[]]],"c":[],"p":[[1,"str"],[8,"Error",7],[1,"usize"],[5,"Range",206],[1,"tuple"],[5,"Report",207],[5,"Error",208],[6,"Result",209],[5,"Module",210],[5,"Vec",211],[6,"Token",122],[6,"LexicalError",93],[6,"ParseError",212],[5,"BinaryFirstLvlOpParser",21],[5,"BinarySecondLvlOpParser",21],[5,"BinaryThirdLvlOpParser",21],[5,"ModuleParser",21],[5,"ModulesParser",21],[5,"PathSegmentsParser",21],[5,"UnaryOpParser",21],[6,"BinaryOp",210],[10,"__ToTriple",21],[17,"Item"],[10,"IntoIterator",213],[6,"PathSegment",210],[6,"UnaryOp",210],[5,"TypeId",214],[5,"Formatter",215],[8,"Result",215],[5,"Lexer",93],[6,"Option",216],[5,"String",217],[6,"LexingError",122],[1,"bool"],[5,"ParseIntError",218],[6,"Infallible",219],[5,"Lexer",220],[15,"User",13],[15,"UnrecognizedEof",13],[15,"UnrecognizedToken",13],[15,"InvalidToken",13],[15,"ExtraToken",13],[8,"Spanned",93]],"b":[[105,"impl-Debug-for-LexicalError"],[106,"impl-Display-for-LexicalError"],[191,"impl-From%3CParseIntError%3E-for-LexingError"],[193,"impl-From%3CInfallible%3E-for-LexingError"]]}],\ ["edlang_session",{"doc":"","t":"PGPPPPPGFNNNNNNNNNNNNONNONNNNNNNNNNNNOOOOOOONNNNNNNNNNNN","n":["Aggressive","DebugInfo","Default","Full","Less","None","None","OptLevel","Session","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","debug_info","eq","eq","file_path","fmt","fmt","fmt","from","from","from","get_platform_library_ext","hash","hash","into","into","into","library","optlevel","output_asm","output_file","output_llvm","source","target_dir","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"edlang_session"],[56,"core::fmt"],[57,"core::fmt"],[58,"core::result"],[59,"core::any"]],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","The directory where to store artifacts and intermediate …","","","","","","","","","","","",""],"i":[2,0,2,3,2,2,3,0,0,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,1,2,3,1,2,3,1,2,3,1,2,3,1,1,1,1,1,1,1,1,2,3,1,2,3,1,2,3,1,2,3],"f":[0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[2,2],[3,3],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],0,[[2,2],5],[[3,3],5],0,[[1,6],7],[[2,6],7],[[3,6],7],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],8],[[2,-1],4,9],[[3,-1],4,9],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,11,[]]],"c":[],"p":[[5,"Session",0],[6,"OptLevel",0],[6,"DebugInfo",0],[1,"tuple"],[1,"bool"],[5,"Formatter",56],[8,"Result",56],[1,"str"],[10,"Hasher",57],[6,"Result",58],[5,"TypeId",59]],"b":[]}],\ ["edlang_span",{"doc":"","t":"FNNNNNNNNNNONONNNNNN","n":["Span","borrow","borrow_mut","clone","clone_into","cmp","default","eq","fmt","from","hash","hi","into","lo","new","partial_cmp","to_owned","try_from","try_into","type_id"],"q":[[0,"edlang_span"],[20,"core::cmp"],[21,"core::fmt"],[22,"core::fmt"],[23,"core::option"],[24,"core::result"],[25,"core::any"]],"d":["","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[[-1,-2],2,[],[]],[[1,1],3],[[],1],[[1,1],4],[[1,5],6],[-1,-1,[]],[[1,-1],2,7],0,[-1,-2,[],[]],0,[[8,8],1],[[1,1],[[9,[3]]]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]]],"c":[],"p":[[5,"Span",0],[1,"tuple"],[6,"Ordering",20],[1,"bool"],[5,"Formatter",21],[8,"Result",21],[10,"Hasher",22],[1,"usize"],[6,"Option",23],[6,"Result",24],[5,"TypeId",25]],"b":[]}],\ ["either",{"doc":"The enum Either with variants Left and Right is a general …","t":"GFEPEPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQQNNNNNNN","n":["Either","IterEither","Left","Left","Right","Right","all","all","any","any","as_mut","as_mut","as_mut","as_mut","as_mut","as_mut","as_mut","as_pin_mut","as_pin_ref","as_ref","as_ref","as_ref","as_ref","as_ref","as_ref","as_ref","borrow","borrow","borrow_mut","borrow_mut","cause","clone","clone","clone_from","clone_into","clone_into","cmp","collect","collect","consume","count","count","deref","deref_mut","description","either","either_into","either_with","eq","expect_left","expect_right","extend","factor_err","factor_first","factor_into_iter","factor_iter","factor_iter_mut","factor_none","factor_ok","factor_second","fill_buf","find","find","find_map","find_map","flip","flush","fmt","fmt","fmt","fold","fold","for_both","for_each","for_each","from","from","from","hash","into","into","into","into_future","into_inner","into_iter","into_iter","into_iter","is_left","is_right","iter","iter_mut","last","last","left","left_and_then","left_or","left_or_default","left_or_else","len","len","map","map_either","map_either_with","map_left","map_right","next","next","next_back","next_back","nth","nth","partial_cmp","partition","partition","poll","position","position","read","read_exact","read_line","read_to_end","read_to_string","read_until","rfind","rfind","rfold","rfold","right","right_and_then","right_or","right_or_default","right_or_else","seek","size_hint","size_hint","source","to_owned","to_owned","to_string","try_from","try_from","try_into","try_into","try_left","try_right","type_id","type_id","unwrap_left","unwrap_right","write","write_all","write_fmt"],"q":[[0,"either"],[152,"core::iter::traits::iterator"],[153,"core::ops::function"],[154,"core::convert"],[155,"core::ffi::c_str"],[156,"std::path"],[157,"std::ffi::os_str"],[158,"core::pin"],[159,"core::convert"],[160,"core::option"],[161,"core::clone"],[162,"core::cmp"],[163,"core::cmp"],[164,"std::io"],[165,"core::ops::deref"],[166,"core::ops::deref"],[167,"core::iter::traits::collect"],[168,"std::io::error"],[169,"std::io"],[170,"core::hash"],[171,"core::iter::traits::exact_size"],[172,"core::iter::traits::double_ended"],[173,"core::cmp"],[174,"core::task::poll"],[175,"core::future::future"],[176,"std::io"],[177,"alloc::vec"],[178,"std::io"],[179,"core::fmt"]],"d":["The enum Either with variants Left and Right is a general …","Iterator that maps left or right iterators to …","","A value of type L.","","A value of type R.","","","","","","Convert &mut Either<L, R> to Either<&mut L, &mut R>.","","","","","","Convert Pin<&mut Either<L, R>> to …","Convert Pin<&Either<L, R>> to Either<Pin<&L>, Pin<&R>>, …","Convert &Either<L, R> to Either<&L, &R>.","","","","","","","","","","","","","","","","","","","","","","","","","","Apply one of two functions depending on contents, unifying …","Convert the contained value into T","Like either, but provide some context to whichever of the …","","Returns the left value","Returns the right value","","Factors out a homogenous type from an Either of Result.","Factor out a homogeneous type from an either of pairs.","Converts an Either of Iterators to be an Iterator of Either…","Borrows an Either of Iterators to be an Iterator of Eithers","Mutably borrows an Either of Iterators to be an Iterator …","Factors out None from an Either of Option.","Factors out a homogenous type from an Either of Result.","Factor out a homogeneous type from an either of pairs.","","","","","","Convert Either<L, R> to Either<R, L>.","","","","","","","Evaluate the provided expression for both Either::Left and …","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Calls U::from(self).","","Calls U::from(self).","","Extract the value of an either over two equivalent types.","","Convert the inner value to an iterator.","","Return true if the value is the Left variant.","Return true if the value is the Right variant.","Borrow the inner value as an iterator.","Mutably borrow the inner value as an iterator.","","","Convert the left side of Either<L, R> to an Option<L>.","Apply the function f on the value in the Left variant if …","Return left value or given value","Return left or a default","Returns left value or computes it from a closure","","","Map f over the contained value and return the result in the","Apply the functions f and g to the Left and Right variants …","Similar to map_either, with an added context ctx …","Apply the function f on the value in the Left variant if …","Apply the function f on the value in the Right variant if …","","","","","","","","","","","","","","","","","","","","","","","Convert the right side of Either<L, R> to an Option<R>.","Apply the function f on the value in the Right variant if …","Return right value or given value","Return right or a default","Returns right value or computes it from a closure","","","","","","","","","","","","Macro for unwrapping the left side of an Either, which …","Dual to try_left!, see its documentation for more …","","","Returns the left value","Returns the right value","","",""],"i":[0,0,0,1,0,1,1,7,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,7,1,1,7,1,1,7,1,1,7,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,7,1,1,1,1,7,1,7,0,1,7,1,1,7,1,1,1,7,1,1,1,1,7,1,1,1,1,1,7,1,1,1,1,1,1,7,1,1,1,1,1,1,7,1,7,1,7,1,1,7,1,1,7,1,1,1,1,1,1,1,7,1,7,1,1,1,1,1,1,1,7,1,1,7,1,1,7,1,7,0,0,1,7,1,1,1,1,1],"f":[0,0,0,0,0,0,[[[1,[-1,-2]],-4],2,3,[[3,[],[[4,[]]]]],[],[[6,[-3],[[5,[2]]]]]],[[[7,[-1,-2]],-4],2,3,3,[],[[6,[-3],[[5,[2]]]]]],[[[1,[-1,-2]],-4],2,3,[[3,[],[[4,[]]]]],[],[[6,[-3],[[5,[2]]]]]],[[[7,[-1,-2]],-4],2,3,3,[],[[6,[-3],[[5,[2]]]]]],[[[1,[-2,-3]]],[[8,[-1]]],[],[[9,[[8,[-1]]]]],[[9,[[8,[-1]]]]]],[[[1,[-1,-2]]],[[1,[-1,-2]]],[],[]],[[[1,[-2,-3]]],-1,[],[[9,[-1]]],[[9,[-1]]]],[[[1,[-1,-2]]],10,[[9,[10]]],[[9,[10]]]],[[[1,[-1,-2]]],11,[[9,[11]]],[[9,[11]]]],[[[1,[-1,-2]]],12,[[9,[12]]],[[9,[12]]]],[[[1,[-1,-2]]],13,[[9,[13]]],[[9,[13]]]],[[[14,[[1,[-1,-2]]]]],[[1,[[14,[-1]],[14,[-2]]]]],[],[]],[[[14,[[1,[-1,-2]]]]],[[1,[[14,[-1]],[14,[-2]]]]],[],[]],[[[1,[-1,-2]]],[[1,[-1,-2]]],[],[]],[[[1,[-1,-2]]],13,[[15,[13]]],[[15,[13]]]],[[[1,[-1,-2]]],11,[[15,[11]]],[[15,[11]]]],[[[1,[-2,-3]]],[[8,[-1]]],[],[[15,[[8,[-1]]]]],[[15,[[8,[-1]]]]]],[[[1,[-1,-2]]],12,[[15,[12]]],[[15,[12]]]],[[[1,[-2,-3]]],-1,[],[[15,[-1]]],[[15,[-1]]]],[[[1,[-1,-2]]],10,[[15,[10]]],[[15,[10]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1,-2]]],[[17,[16]]],16,16],[[[1,[-1,-2]]],[[1,[-1,-2]]],18,18],[[[7,[-1,-2]]],[[7,[-1,-2]]],18,18],[[[1,[-1,-2]],[1,[-1,-2]]],19,18,18],[[-1,-2],19,[],[]],[[-1,-2],19,[],[]],[[[1,[-1,-2]],[1,[-1,-2]]],20,21,21],[[[1,[-1,-2]]],-4,3,[[3,[],[[4,[]]]]],[],[[22,[-3]]]],[[[7,[-1,-2]]],-4,3,3,[],[[22,[-3]]]],[[[1,[-1,-2]],23],19,24,24],[[[1,[-1,-2]]],23,3,[[3,[],[[4,[]]]]]],[[[7,[-1,-2]]],23,3,3],[[[1,[-1,-2]]],-3,25,[[25,[],[[26,[]]]]],[]],[[[1,[-1,-2]]],-3,27,[[27,[],[[26,[]]]]],[]],[[[1,[-1,-2]]],11,16,16],[[[1,[-1,-2]],-4,-5],-3,[],[],[],[[28,[-1],[[5,[-3]]]]],[[28,[-2],[[5,[-3]]]]]],[[[1,[-2,-3]]],-1,[],[[29,[-1]]],[[29,[-1]]]],[[[1,[-1,-2]],-3,-5,-6],-4,[],[],[],[],[[28,[-3,-1],[[5,[-4]]]]],[[28,[-3,-2],[[5,[-4]]]]]],[[[1,[-1,-2]],[1,[-1,-2]]],2,30,30],[[[1,[-1,-2]],11],-1,[],31],[[[1,[-1,-2]],11],-2,31,[]],[[[1,[-2,-3]],-4],19,[],[[32,[-1]]],[[32,[-1]]],[[33,[],[[4,[-1]]]]]],[[[1,[[34,[-1,-2]],[34,[-3,-2]]]]],[[34,[[1,[-1,-3]],-2]]],[],[],[]],[[[1,[[19,[-1,-2]],[19,[-1,-3]]]]],[[19,[-1,[1,[-2,-3]]]]],[],[],[]],[[[1,[-1,-2]]],7,33,33],[[[1,[-1,-2]]],7,[],[]],[[[1,[-1,-2]]],7,[],[]],[[[1,[[17,[-1]],[17,[-2]]]]],[[17,[[1,[-1,-2]]]]],[],[]],[[[1,[[34,[-1,-2]],[34,[-1,-3]]]]],[[34,[-1,[1,[-2,-3]]]]],[],[],[]],[[[1,[[19,[-1,-2]],[19,[-3,-2]]]]],[[19,[[1,[-1,-3]],-2]]],[],[],[]],[[[1,[-1,-2]]],[[36,[[8,[35]]]]],24,24],[[[1,[-1,-2]],-4],[[17,[-3]]],3,[[3,[],[[4,[]]]]],[],[[6,[-3],[[5,[2]]]]]],[[[7,[-1,-2]],-4],[[17,[-3]]],3,3,[],[[6,[-3],[[5,[2]]]]]],[[[1,[-1,-2]],-5],[[17,[-4]]],3,[[3,[],[[4,[]]]]],[],[],[[6,[-3],[[5,[[17,[-4]]]]]]]],[[[7,[-1,-2]],-5],[[17,[-4]]],3,3,[],[],[[6,[-3],[[5,[[17,[-4]]]]]]]],[[[1,[-1,-2]]],[[1,[-2,-1]]],[],[]],[[[1,[-1,-2]]],[[36,[19]]],37,37],[[[1,[-1,-2]],38],39,40,40],[[[1,[-1,-2]],38],39,31,31],[[[7,[-1,-2]],38],39,31,31],[[[1,[-1,-2]],-3,-5],-3,3,[[3,[],[[4,[]]]]],[],[],[[6,[-3,-4],[[5,[-3]]]]]],[[[7,[-1,-2]],-3,-5],-3,3,3,[],[],[[6,[-3,-4],[[5,[-3]]]]]],0,[[[1,[-1,-2]],-4],19,3,[[3,[],[[4,[]]]]],[],[[6,[-3]]]],[[[7,[-1,-2]],-4],19,3,3,[],[[6,[-3]]]],[-1,-1,[]],[[[34,[-1,-2]]],[[1,[-2,-1]]],[],[]],[-1,-1,[]],[[[1,[-1,-2]],-3],19,41,41,42],[-1,-2,[],[]],[[[1,[-1,-2]]],[[34,[-2,-1]]],[],[]],[-1,-2,[],[]],[-1,[],[]],[[[1,[-1,-1]]],-1,[]],[-1,-2,[],[]],[[[1,[-1,-2]]],1,33,[[33,[],[[4,[]]]]]],[-1,-2,[],[]],[[[1,[-1,-2]]],2,[],[]],[[[1,[-1,-2]]],2,[],[]],[[[1,[-1,-2]]],1,[],[]],[[[1,[-1,-2]]],1,[],[]],[[[1,[-1,-2]]],[[17,[-3]]],3,[[3,[],[[4,[]]]]],[]],[[[7,[-1,-2]]],[[17,[-3]]],3,3,[]],[[[1,[-1,-2]]],[[17,[-1]]],[],[]],[[[1,[-1,-2]],-4],[[1,[-3,-2]]],[],[],[],[[28,[-1],[[5,[[1,[-3,-2]]]]]]]],[[[1,[-1,-2]],-1],-1,[],[]],[[[1,[-1,-2]]],-1,43,[]],[[[1,[-1,-2]],-3],-1,[],[],[[28,[-2],[[5,[-1]]]]]],[[[1,[-1,-2]]],23,44,[[44,[],[[4,[]]]]]],[[[7,[-1,-2]]],23,44,44],[[[1,[-1,-1]],-3],[[1,[-2,-2]]],[],[],[[28,[-1],[[5,[-2]]]]]],[[[1,[-1,-2]],-4,-6],[[1,[-3,-5]]],[],[],[],[[28,[-1],[[5,[-3]]]]],[],[[28,[-2],[[5,[-5]]]]]],[[[1,[-1,-2]],-3,-5,-7],[[1,[-4,-6]]],[],[],[],[],[[28,[-3,-1],[[5,[-4]]]]],[],[[28,[-3,-2],[[5,[-6]]]]]],[[[1,[-1,-2]],-4],[[1,[-3,-2]]],[],[],[],[[28,[-1],[[5,[-3]]]]]],[[[1,[-1,-2]],-4],[[1,[-1,-3]]],[],[],[],[[28,[-2],[[5,[-3]]]]]],[[[1,[-1,-2]]],[[17,[-3]]],3,[[3,[],[[4,[]]]]],[]],[[[7,[-1,-2]]],[[17,[-3]]],3,3,[]],[[[1,[-1,-2]]],[[17,[-3]]],45,[[45,[],[[4,[]]]]],[]],[[[7,[-1,-2]]],[[17,[-3]]],45,45,[]],[[[1,[-1,-2]],23],[[17,[-3]]],3,[[3,[],[[4,[]]]]],[]],[[[7,[-1,-2]],23],[[17,[-3]]],3,3,[]],[[[1,[-1,-2]],[1,[-1,-2]]],[[17,[20]]],46,46],[[[1,[-1,-2]],-4],[[19,[-5,-5]]],3,[[3,[],[[4,[]]]]],[],[[6,[-3],[[5,[2]]]]],[43,[32,[-3]]]],[[[7,[-1,-2]],-4],[[19,[-5,-5]]],3,3,[],[[6,[-3],[[5,[2]]]]],[43,[32,[-3]]]],[[[14,[[1,[-1,-2]]]],47],[[48,[-3]]],49,[[49,[],[[5,[]]]]],[]],[[[1,[-1,-2]],-4],[[17,[23]]],3,[[3,[],[[4,[]]]]],[],[[6,[-3],[[5,[2]]]]]],[[[7,[-1,-2]],-4],[[17,[23]]],3,3,[],[[6,[-3],[[5,[2]]]]]],[[[1,[-1,-2]],[8,[35]]],[[36,[23]]],50,50],[[[1,[-1,-2]],[8,[35]]],[[36,[19]]],50,50],[[[1,[-1,-2]],51],[[36,[23]]],24,24],[[[1,[-1,-2]],[52,[35]]],[[36,[23]]],50,50],[[[1,[-1,-2]],51],[[36,[23]]],50,50],[[[1,[-1,-2]],35,[52,[35]]],[[36,[23]]],24,24],[[[1,[-1,-2]],-4],[[17,[-3]]],45,[[45,[],[[4,[]]]]],[],[[6,[-3],[[5,[2]]]]]],[[[7,[-1,-2]],-4],[[17,[-3]]],45,45,[],[[6,[-3],[[5,[2]]]]]],[[[1,[-1,-2]],-3,-5],-3,45,[[45,[],[[4,[]]]]],[],[],[[6,[-3,-4],[[5,[-3]]]]]],[[[7,[-1,-2]],-3,-5],-3,45,45,[],[],[[6,[-3,-4],[[5,[-3]]]]]],[[[1,[-1,-2]]],[[17,[-2]]],[],[]],[[[1,[-1,-2]],-4],[[1,[-1,-3]]],[],[],[],[[28,[-2],[[5,[[1,[-1,-3]]]]]]]],[[[1,[-1,-2]],-2],-2,[],[]],[[[1,[-1,-2]]],-2,[],43],[[[1,[-1,-2]],-3],-2,[],[],[[28,[-1],[[5,[-2]]]]]],[[[1,[-1,-2]],53],[[36,[54]]],55,55],[[[1,[-1,-2]]],[[19,[23,[17,[23]]]]],3,[[3,[],[[4,[]]]]]],[[[7,[-1,-2]]],[[19,[23,[17,[23]]]]],3,3],[[[1,[-1,-2]]],[[17,[16]]],16,16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,51,[]],[-1,[[34,[-2]]],[],[]],[-1,[[34,[-2]]],[],[]],[-1,[[34,[-2]]],[],[]],[-1,[[34,[-2]]],[],[]],0,0,[-1,56,[]],[-1,56,[]],[[[1,[-1,-2]]],-1,[],31],[[[1,[-1,-2]]],-2,31,[]],[[[1,[-1,-2]],[8,[35]]],[[36,[23]]],37,37],[[[1,[-1,-2]],[8,[35]]],[[36,[19]]],37,37],[[[1,[-1,-2]],57],[[36,[19]]],37,37]],"c":[],"p":[[6,"Either",0],[1,"bool"],[10,"Iterator",152],[17,"Item"],[17,"Output"],[10,"FnMut",153],[5,"IterEither",0],[1,"slice"],[10,"AsMut",154],[5,"CStr",155],[1,"str"],[5,"Path",156],[5,"OsStr",157],[5,"Pin",158],[10,"AsRef",154],[10,"Error",159],[6,"Option",160],[10,"Clone",161],[1,"tuple"],[6,"Ordering",162],[10,"Ord",162],[10,"FromIterator",163],[1,"usize"],[10,"BufRead",164],[10,"Deref",165],[17,"Target"],[10,"DerefMut",165],[10,"FnOnce",153],[10,"Into",154],[10,"PartialEq",162],[10,"Debug",166],[10,"Extend",163],[10,"IntoIterator",163],[6,"Result",167],[1,"u8"],[8,"Result",168],[10,"Write",164],[5,"Formatter",166],[8,"Result",166],[10,"Display",166],[10,"Hash",169],[10,"Hasher",169],[10,"Default",170],[10,"ExactSizeIterator",171],[10,"DoubleEndedIterator",172],[10,"PartialOrd",162],[5,"Context",173],[6,"Poll",174],[10,"Future",175],[10,"Read",164],[5,"String",176],[5,"Vec",177],[6,"SeekFrom",164],[1,"u64"],[10,"Seek",164],[5,"TypeId",178],[5,"Arguments",166]],"b":[[10,"impl-AsMut%3C%5BTarget%5D%3E-for-Either%3CL,+R%3E"],[11,"impl-Either%3CL,+R%3E"],[12,"impl-AsMut%3CTarget%3E-for-Either%3CL,+R%3E"],[13,"impl-AsMut%3CCStr%3E-for-Either%3CL,+R%3E"],[14,"impl-AsMut%3Cstr%3E-for-Either%3CL,+R%3E"],[15,"impl-AsMut%3CPath%3E-for-Either%3CL,+R%3E"],[16,"impl-AsMut%3COsStr%3E-for-Either%3CL,+R%3E"],[19,"impl-Either%3CL,+R%3E"],[20,"impl-AsRef%3COsStr%3E-for-Either%3CL,+R%3E"],[21,"impl-AsRef%3Cstr%3E-for-Either%3CL,+R%3E"],[22,"impl-AsRef%3C%5BTarget%5D%3E-for-Either%3CL,+R%3E"],[23,"impl-AsRef%3CPath%3E-for-Either%3CL,+R%3E"],[24,"impl-AsRef%3CTarget%3E-for-Either%3CL,+R%3E"],[25,"impl-AsRef%3CCStr%3E-for-Either%3CL,+R%3E"],[67,"impl-Display-for-Either%3CL,+R%3E"],[68,"impl-Debug-for-Either%3CL,+R%3E"]]}],\ @@ -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_codegen_llvm/codegen.rs.html b/src/edlang_codegen_llvm/codegen.rs.html index 690a3fb9b..be9e8a899 100644 --- a/src/edlang_codegen_llvm/codegen.rs.html +++ b/src/edlang_codegen_llvm/codegen.rs.html @@ -1404,6 +1404,9 @@ 1403 1404 1405 +1406 +1407 +1408

use std::{collections::HashMap, error::Error, path::PathBuf};
 
 use edlang_ir as ir;
@@ -1627,7 +1630,7 @@
     };
 
     let fn_value = ctx.module.add_function(
-        &body.name,
+        &body.get_mangled_name(),
         fn_type,
         Some(if body.is_extern {
             inkwell::module::Linkage::AvailableExternally
@@ -1662,7 +1665,7 @@
     let subprogram = ctx.di_builder.create_function(
         ctx.di_namespace,
         &body.name,
-        Some(&body.name),
+        Some(&body.get_mangled_name()),
         ctx.di_unit.get_file(),
         line as u32 + 1,
         di_type,
@@ -1679,7 +1682,7 @@
     let body = ctx.ctx.program.functions.get(&fn_id).unwrap();
     trace!("compiling fn body: {}", body.name);
 
-    let fn_value = ctx.module.get_function(&body.name).unwrap();
+    let fn_value = ctx.module.get_function(&body.get_mangled_name()).unwrap();
     let di_program = fn_value.get_subprogram().unwrap();
 
     let mut debug_loc = ctx.set_debug_loc(di_program.as_debug_info_scope(), body.fn_span);
@@ -1934,7 +1937,10 @@
                 target,
             } => {
                 let target_fn_body = ctx.ctx.program.functions.get(func).unwrap();
-                let fn_value = ctx.module.get_function(&target_fn_body.name).unwrap();
+                let fn_value = ctx
+                    .module
+                    .get_function(&target_fn_body.get_mangled_name())
+                    .unwrap();
                 let args: Vec<_> = args
                     .iter()
                     .map(|x| compile_rvalue(ctx, fn_id, &locals, x).unwrap().0.into())
diff --git a/src/edlang_driver/lib.rs.html b/src/edlang_driver/lib.rs.html
index a4bf1b95a..3e82827bd 100644
--- a/src/edlang_driver/lib.rs.html
+++ b/src/edlang_driver/lib.rs.html
@@ -211,10 +211,10 @@
     let path = args.input.display().to_string();
     let source = std::fs::read_to_string(&args.input)?;
 
-    let module = edlang_parser::parse_ast(&source);
+    let modules = edlang_parser::parse_ast(&source);
 
-    let module = match module {
-        Ok(module) => module,
+    let modules = match modules {
+        Ok(modules) => modules,
         Err(error) => {
             let report = edlang_parser::error_to_report(&path, &error)?;
             edlang_parser::print_report(&path, &source, report)?;
@@ -277,11 +277,11 @@
     tracing::debug!("Debug Info: {:#?}", session.debug_info);
 
     if args.ast {
-        println!("{:#?}", module);
+        println!("{:#?}", modules);
         return Ok(());
     }
 
-    let program_ir = match lower_modules(&[module.clone()]) {
+    let program_ir = match lower_modules(&modules) {
         Ok(ir) => ir,
         Err(error) => {
             let report = edlang_check::lowering_error_to_report(error, &session);
diff --git a/src/edlang_ir/lib.rs.html b/src/edlang_ir/lib.rs.html
index 375765b4c..61ff71d81 100644
--- a/src/edlang_ir/lib.rs.html
+++ b/src/edlang_ir/lib.rs.html
@@ -524,6 +524,17 @@
 523
 524
 525
+526
+527
+528
+529
+530
+531
+532
+533
+534
+535
+536
 
// Based on a cfg
 
 use std::{
@@ -615,6 +626,17 @@
     pub fn get_return_local(&self) -> Local {
         self.locals[0].clone()
     }
+
+    pub fn get_mangled_name(&self) -> String {
+        if self.name == "main" {
+            "main".to_string()
+        } else {
+            format!(
+                "{}@{}@{}",
+                self.name, self.def_id.program_id, self.def_id.id
+            )
+        }
+    }
 }
 
 #[derive(Debug, Clone)]
diff --git a/src/edlang_lowering/lib.rs.html b/src/edlang_lowering/lib.rs.html
index 61f2645ef..cb982d8e3 100644
--- a/src/edlang_lowering/lib.rs.html
+++ b/src/edlang_lowering/lib.rs.html
@@ -1229,6 +1229,9 @@
 1228
 1229
 1230
+1231
+1232
+1233
 
use std::collections::HashMap;
 
 use ast::{BinaryOp, ModuleStatement, Span, WhileStmt};
@@ -1289,11 +1292,10 @@
         }
     }
 
-    let body = ctx.body.modules.get(&id).unwrap();
-
     // fill fn sigs
     for content in &module.contents {
         if let ModuleStatement::Function(fn_def) = content {
+            let body = ctx.body.modules.get(&id).unwrap();
             let fn_id = *body.symbols.functions.get(&fn_def.name.name).unwrap();
 
             let mut args = Vec::new();
@@ -1323,7 +1325,11 @@
                 ctx = lower_function(ctx, fn_def, id)?;
             }
             // ModuleStatement::Type(_) => todo!(),
-            ModuleStatement::Module(_mod_def) => {}
+            ModuleStatement::Module(mod_def) => {
+                let body = ctx.body.modules.get(&id).unwrap();
+                let id = *body.symbols.modules.get(&mod_def.name.name).unwrap();
+                ctx = lower_module(ctx, mod_def, id)?;
+            }
             _ => {}
         }
     }
diff --git a/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-2424ac56b73fbc2b/out/grammar.rs.html b/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-2424ac56b73fbc2b/out/grammar.rs.html
index 06d8df446..19086e7bc 100644
--- a/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-2424ac56b73fbc2b/out/grammar.rs.html
+++ b/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-2424ac56b73fbc2b/out/grammar.rs.html
@@ -312149,8 +312149,13562 @@
 312148
 312149
 312150
+312151
+312152
+312153
+312154
+312155
+312156
+312157
+312158
+312159
+312160
+312161
+312162
+312163
+312164
+312165
+312166
+312167
+312168
+312169
+312170
+312171
+312172
+312173
+312174
+312175
+312176
+312177
+312178
+312179
+312180
+312181
+312182
+312183
+312184
+312185
+312186
+312187
+312188
+312189
+312190
+312191
+312192
+312193
+312194
+312195
+312196
+312197
+312198
+312199
+312200
+312201
+312202
+312203
+312204
+312205
+312206
+312207
+312208
+312209
+312210
+312211
+312212
+312213
+312214
+312215
+312216
+312217
+312218
+312219
+312220
+312221
+312222
+312223
+312224
+312225
+312226
+312227
+312228
+312229
+312230
+312231
+312232
+312233
+312234
+312235
+312236
+312237
+312238
+312239
+312240
+312241
+312242
+312243
+312244
+312245
+312246
+312247
+312248
+312249
+312250
+312251
+312252
+312253
+312254
+312255
+312256
+312257
+312258
+312259
+312260
+312261
+312262
+312263
+312264
+312265
+312266
+312267
+312268
+312269
+312270
+312271
+312272
+312273
+312274
+312275
+312276
+312277
+312278
+312279
+312280
+312281
+312282
+312283
+312284
+312285
+312286
+312287
+312288
+312289
+312290
+312291
+312292
+312293
+312294
+312295
+312296
+312297
+312298
+312299
+312300
+312301
+312302
+312303
+312304
+312305
+312306
+312307
+312308
+312309
+312310
+312311
+312312
+312313
+312314
+312315
+312316
+312317
+312318
+312319
+312320
+312321
+312322
+312323
+312324
+312325
+312326
+312327
+312328
+312329
+312330
+312331
+312332
+312333
+312334
+312335
+312336
+312337
+312338
+312339
+312340
+312341
+312342
+312343
+312344
+312345
+312346
+312347
+312348
+312349
+312350
+312351
+312352
+312353
+312354
+312355
+312356
+312357
+312358
+312359
+312360
+312361
+312362
+312363
+312364
+312365
+312366
+312367
+312368
+312369
+312370
+312371
+312372
+312373
+312374
+312375
+312376
+312377
+312378
+312379
+312380
+312381
+312382
+312383
+312384
+312385
+312386
+312387
+312388
+312389
+312390
+312391
+312392
+312393
+312394
+312395
+312396
+312397
+312398
+312399
+312400
+312401
+312402
+312403
+312404
+312405
+312406
+312407
+312408
+312409
+312410
+312411
+312412
+312413
+312414
+312415
+312416
+312417
+312418
+312419
+312420
+312421
+312422
+312423
+312424
+312425
+312426
+312427
+312428
+312429
+312430
+312431
+312432
+312433
+312434
+312435
+312436
+312437
+312438
+312439
+312440
+312441
+312442
+312443
+312444
+312445
+312446
+312447
+312448
+312449
+312450
+312451
+312452
+312453
+312454
+312455
+312456
+312457
+312458
+312459
+312460
+312461
+312462
+312463
+312464
+312465
+312466
+312467
+312468
+312469
+312470
+312471
+312472
+312473
+312474
+312475
+312476
+312477
+312478
+312479
+312480
+312481
+312482
+312483
+312484
+312485
+312486
+312487
+312488
+312489
+312490
+312491
+312492
+312493
+312494
+312495
+312496
+312497
+312498
+312499
+312500
+312501
+312502
+312503
+312504
+312505
+312506
+312507
+312508
+312509
+312510
+312511
+312512
+312513
+312514
+312515
+312516
+312517
+312518
+312519
+312520
+312521
+312522
+312523
+312524
+312525
+312526
+312527
+312528
+312529
+312530
+312531
+312532
+312533
+312534
+312535
+312536
+312537
+312538
+312539
+312540
+312541
+312542
+312543
+312544
+312545
+312546
+312547
+312548
+312549
+312550
+312551
+312552
+312553
+312554
+312555
+312556
+312557
+312558
+312559
+312560
+312561
+312562
+312563
+312564
+312565
+312566
+312567
+312568
+312569
+312570
+312571
+312572
+312573
+312574
+312575
+312576
+312577
+312578
+312579
+312580
+312581
+312582
+312583
+312584
+312585
+312586
+312587
+312588
+312589
+312590
+312591
+312592
+312593
+312594
+312595
+312596
+312597
+312598
+312599
+312600
+312601
+312602
+312603
+312604
+312605
+312606
+312607
+312608
+312609
+312610
+312611
+312612
+312613
+312614
+312615
+312616
+312617
+312618
+312619
+312620
+312621
+312622
+312623
+312624
+312625
+312626
+312627
+312628
+312629
+312630
+312631
+312632
+312633
+312634
+312635
+312636
+312637
+312638
+312639
+312640
+312641
+312642
+312643
+312644
+312645
+312646
+312647
+312648
+312649
+312650
+312651
+312652
+312653
+312654
+312655
+312656
+312657
+312658
+312659
+312660
+312661
+312662
+312663
+312664
+312665
+312666
+312667
+312668
+312669
+312670
+312671
+312672
+312673
+312674
+312675
+312676
+312677
+312678
+312679
+312680
+312681
+312682
+312683
+312684
+312685
+312686
+312687
+312688
+312689
+312690
+312691
+312692
+312693
+312694
+312695
+312696
+312697
+312698
+312699
+312700
+312701
+312702
+312703
+312704
+312705
+312706
+312707
+312708
+312709
+312710
+312711
+312712
+312713
+312714
+312715
+312716
+312717
+312718
+312719
+312720
+312721
+312722
+312723
+312724
+312725
+312726
+312727
+312728
+312729
+312730
+312731
+312732
+312733
+312734
+312735
+312736
+312737
+312738
+312739
+312740
+312741
+312742
+312743
+312744
+312745
+312746
+312747
+312748
+312749
+312750
+312751
+312752
+312753
+312754
+312755
+312756
+312757
+312758
+312759
+312760
+312761
+312762
+312763
+312764
+312765
+312766
+312767
+312768
+312769
+312770
+312771
+312772
+312773
+312774
+312775
+312776
+312777
+312778
+312779
+312780
+312781
+312782
+312783
+312784
+312785
+312786
+312787
+312788
+312789
+312790
+312791
+312792
+312793
+312794
+312795
+312796
+312797
+312798
+312799
+312800
+312801
+312802
+312803
+312804
+312805
+312806
+312807
+312808
+312809
+312810
+312811
+312812
+312813
+312814
+312815
+312816
+312817
+312818
+312819
+312820
+312821
+312822
+312823
+312824
+312825
+312826
+312827
+312828
+312829
+312830
+312831
+312832
+312833
+312834
+312835
+312836
+312837
+312838
+312839
+312840
+312841
+312842
+312843
+312844
+312845
+312846
+312847
+312848
+312849
+312850
+312851
+312852
+312853
+312854
+312855
+312856
+312857
+312858
+312859
+312860
+312861
+312862
+312863
+312864
+312865
+312866
+312867
+312868
+312869
+312870
+312871
+312872
+312873
+312874
+312875
+312876
+312877
+312878
+312879
+312880
+312881
+312882
+312883
+312884
+312885
+312886
+312887
+312888
+312889
+312890
+312891
+312892
+312893
+312894
+312895
+312896
+312897
+312898
+312899
+312900
+312901
+312902
+312903
+312904
+312905
+312906
+312907
+312908
+312909
+312910
+312911
+312912
+312913
+312914
+312915
+312916
+312917
+312918
+312919
+312920
+312921
+312922
+312923
+312924
+312925
+312926
+312927
+312928
+312929
+312930
+312931
+312932
+312933
+312934
+312935
+312936
+312937
+312938
+312939
+312940
+312941
+312942
+312943
+312944
+312945
+312946
+312947
+312948
+312949
+312950
+312951
+312952
+312953
+312954
+312955
+312956
+312957
+312958
+312959
+312960
+312961
+312962
+312963
+312964
+312965
+312966
+312967
+312968
+312969
+312970
+312971
+312972
+312973
+312974
+312975
+312976
+312977
+312978
+312979
+312980
+312981
+312982
+312983
+312984
+312985
+312986
+312987
+312988
+312989
+312990
+312991
+312992
+312993
+312994
+312995
+312996
+312997
+312998
+312999
+313000
+313001
+313002
+313003
+313004
+313005
+313006
+313007
+313008
+313009
+313010
+313011
+313012
+313013
+313014
+313015
+313016
+313017
+313018
+313019
+313020
+313021
+313022
+313023
+313024
+313025
+313026
+313027
+313028
+313029
+313030
+313031
+313032
+313033
+313034
+313035
+313036
+313037
+313038
+313039
+313040
+313041
+313042
+313043
+313044
+313045
+313046
+313047
+313048
+313049
+313050
+313051
+313052
+313053
+313054
+313055
+313056
+313057
+313058
+313059
+313060
+313061
+313062
+313063
+313064
+313065
+313066
+313067
+313068
+313069
+313070
+313071
+313072
+313073
+313074
+313075
+313076
+313077
+313078
+313079
+313080
+313081
+313082
+313083
+313084
+313085
+313086
+313087
+313088
+313089
+313090
+313091
+313092
+313093
+313094
+313095
+313096
+313097
+313098
+313099
+313100
+313101
+313102
+313103
+313104
+313105
+313106
+313107
+313108
+313109
+313110
+313111
+313112
+313113
+313114
+313115
+313116
+313117
+313118
+313119
+313120
+313121
+313122
+313123
+313124
+313125
+313126
+313127
+313128
+313129
+313130
+313131
+313132
+313133
+313134
+313135
+313136
+313137
+313138
+313139
+313140
+313141
+313142
+313143
+313144
+313145
+313146
+313147
+313148
+313149
+313150
+313151
+313152
+313153
+313154
+313155
+313156
+313157
+313158
+313159
+313160
+313161
+313162
+313163
+313164
+313165
+313166
+313167
+313168
+313169
+313170
+313171
+313172
+313173
+313174
+313175
+313176
+313177
+313178
+313179
+313180
+313181
+313182
+313183
+313184
+313185
+313186
+313187
+313188
+313189
+313190
+313191
+313192
+313193
+313194
+313195
+313196
+313197
+313198
+313199
+313200
+313201
+313202
+313203
+313204
+313205
+313206
+313207
+313208
+313209
+313210
+313211
+313212
+313213
+313214
+313215
+313216
+313217
+313218
+313219
+313220
+313221
+313222
+313223
+313224
+313225
+313226
+313227
+313228
+313229
+313230
+313231
+313232
+313233
+313234
+313235
+313236
+313237
+313238
+313239
+313240
+313241
+313242
+313243
+313244
+313245
+313246
+313247
+313248
+313249
+313250
+313251
+313252
+313253
+313254
+313255
+313256
+313257
+313258
+313259
+313260
+313261
+313262
+313263
+313264
+313265
+313266
+313267
+313268
+313269
+313270
+313271
+313272
+313273
+313274
+313275
+313276
+313277
+313278
+313279
+313280
+313281
+313282
+313283
+313284
+313285
+313286
+313287
+313288
+313289
+313290
+313291
+313292
+313293
+313294
+313295
+313296
+313297
+313298
+313299
+313300
+313301
+313302
+313303
+313304
+313305
+313306
+313307
+313308
+313309
+313310
+313311
+313312
+313313
+313314
+313315
+313316
+313317
+313318
+313319
+313320
+313321
+313322
+313323
+313324
+313325
+313326
+313327
+313328
+313329
+313330
+313331
+313332
+313333
+313334
+313335
+313336
+313337
+313338
+313339
+313340
+313341
+313342
+313343
+313344
+313345
+313346
+313347
+313348
+313349
+313350
+313351
+313352
+313353
+313354
+313355
+313356
+313357
+313358
+313359
+313360
+313361
+313362
+313363
+313364
+313365
+313366
+313367
+313368
+313369
+313370
+313371
+313372
+313373
+313374
+313375
+313376
+313377
+313378
+313379
+313380
+313381
+313382
+313383
+313384
+313385
+313386
+313387
+313388
+313389
+313390
+313391
+313392
+313393
+313394
+313395
+313396
+313397
+313398
+313399
+313400
+313401
+313402
+313403
+313404
+313405
+313406
+313407
+313408
+313409
+313410
+313411
+313412
+313413
+313414
+313415
+313416
+313417
+313418
+313419
+313420
+313421
+313422
+313423
+313424
+313425
+313426
+313427
+313428
+313429
+313430
+313431
+313432
+313433
+313434
+313435
+313436
+313437
+313438
+313439
+313440
+313441
+313442
+313443
+313444
+313445
+313446
+313447
+313448
+313449
+313450
+313451
+313452
+313453
+313454
+313455
+313456
+313457
+313458
+313459
+313460
+313461
+313462
+313463
+313464
+313465
+313466
+313467
+313468
+313469
+313470
+313471
+313472
+313473
+313474
+313475
+313476
+313477
+313478
+313479
+313480
+313481
+313482
+313483
+313484
+313485
+313486
+313487
+313488
+313489
+313490
+313491
+313492
+313493
+313494
+313495
+313496
+313497
+313498
+313499
+313500
+313501
+313502
+313503
+313504
+313505
+313506
+313507
+313508
+313509
+313510
+313511
+313512
+313513
+313514
+313515
+313516
+313517
+313518
+313519
+313520
+313521
+313522
+313523
+313524
+313525
+313526
+313527
+313528
+313529
+313530
+313531
+313532
+313533
+313534
+313535
+313536
+313537
+313538
+313539
+313540
+313541
+313542
+313543
+313544
+313545
+313546
+313547
+313548
+313549
+313550
+313551
+313552
+313553
+313554
+313555
+313556
+313557
+313558
+313559
+313560
+313561
+313562
+313563
+313564
+313565
+313566
+313567
+313568
+313569
+313570
+313571
+313572
+313573
+313574
+313575
+313576
+313577
+313578
+313579
+313580
+313581
+313582
+313583
+313584
+313585
+313586
+313587
+313588
+313589
+313590
+313591
+313592
+313593
+313594
+313595
+313596
+313597
+313598
+313599
+313600
+313601
+313602
+313603
+313604
+313605
+313606
+313607
+313608
+313609
+313610
+313611
+313612
+313613
+313614
+313615
+313616
+313617
+313618
+313619
+313620
+313621
+313622
+313623
+313624
+313625
+313626
+313627
+313628
+313629
+313630
+313631
+313632
+313633
+313634
+313635
+313636
+313637
+313638
+313639
+313640
+313641
+313642
+313643
+313644
+313645
+313646
+313647
+313648
+313649
+313650
+313651
+313652
+313653
+313654
+313655
+313656
+313657
+313658
+313659
+313660
+313661
+313662
+313663
+313664
+313665
+313666
+313667
+313668
+313669
+313670
+313671
+313672
+313673
+313674
+313675
+313676
+313677
+313678
+313679
+313680
+313681
+313682
+313683
+313684
+313685
+313686
+313687
+313688
+313689
+313690
+313691
+313692
+313693
+313694
+313695
+313696
+313697
+313698
+313699
+313700
+313701
+313702
+313703
+313704
+313705
+313706
+313707
+313708
+313709
+313710
+313711
+313712
+313713
+313714
+313715
+313716
+313717
+313718
+313719
+313720
+313721
+313722
+313723
+313724
+313725
+313726
+313727
+313728
+313729
+313730
+313731
+313732
+313733
+313734
+313735
+313736
+313737
+313738
+313739
+313740
+313741
+313742
+313743
+313744
+313745
+313746
+313747
+313748
+313749
+313750
+313751
+313752
+313753
+313754
+313755
+313756
+313757
+313758
+313759
+313760
+313761
+313762
+313763
+313764
+313765
+313766
+313767
+313768
+313769
+313770
+313771
+313772
+313773
+313774
+313775
+313776
+313777
+313778
+313779
+313780
+313781
+313782
+313783
+313784
+313785
+313786
+313787
+313788
+313789
+313790
+313791
+313792
+313793
+313794
+313795
+313796
+313797
+313798
+313799
+313800
+313801
+313802
+313803
+313804
+313805
+313806
+313807
+313808
+313809
+313810
+313811
+313812
+313813
+313814
+313815
+313816
+313817
+313818
+313819
+313820
+313821
+313822
+313823
+313824
+313825
+313826
+313827
+313828
+313829
+313830
+313831
+313832
+313833
+313834
+313835
+313836
+313837
+313838
+313839
+313840
+313841
+313842
+313843
+313844
+313845
+313846
+313847
+313848
+313849
+313850
+313851
+313852
+313853
+313854
+313855
+313856
+313857
+313858
+313859
+313860
+313861
+313862
+313863
+313864
+313865
+313866
+313867
+313868
+313869
+313870
+313871
+313872
+313873
+313874
+313875
+313876
+313877
+313878
+313879
+313880
+313881
+313882
+313883
+313884
+313885
+313886
+313887
+313888
+313889
+313890
+313891
+313892
+313893
+313894
+313895
+313896
+313897
+313898
+313899
+313900
+313901
+313902
+313903
+313904
+313905
+313906
+313907
+313908
+313909
+313910
+313911
+313912
+313913
+313914
+313915
+313916
+313917
+313918
+313919
+313920
+313921
+313922
+313923
+313924
+313925
+313926
+313927
+313928
+313929
+313930
+313931
+313932
+313933
+313934
+313935
+313936
+313937
+313938
+313939
+313940
+313941
+313942
+313943
+313944
+313945
+313946
+313947
+313948
+313949
+313950
+313951
+313952
+313953
+313954
+313955
+313956
+313957
+313958
+313959
+313960
+313961
+313962
+313963
+313964
+313965
+313966
+313967
+313968
+313969
+313970
+313971
+313972
+313973
+313974
+313975
+313976
+313977
+313978
+313979
+313980
+313981
+313982
+313983
+313984
+313985
+313986
+313987
+313988
+313989
+313990
+313991
+313992
+313993
+313994
+313995
+313996
+313997
+313998
+313999
+314000
+314001
+314002
+314003
+314004
+314005
+314006
+314007
+314008
+314009
+314010
+314011
+314012
+314013
+314014
+314015
+314016
+314017
+314018
+314019
+314020
+314021
+314022
+314023
+314024
+314025
+314026
+314027
+314028
+314029
+314030
+314031
+314032
+314033
+314034
+314035
+314036
+314037
+314038
+314039
+314040
+314041
+314042
+314043
+314044
+314045
+314046
+314047
+314048
+314049
+314050
+314051
+314052
+314053
+314054
+314055
+314056
+314057
+314058
+314059
+314060
+314061
+314062
+314063
+314064
+314065
+314066
+314067
+314068
+314069
+314070
+314071
+314072
+314073
+314074
+314075
+314076
+314077
+314078
+314079
+314080
+314081
+314082
+314083
+314084
+314085
+314086
+314087
+314088
+314089
+314090
+314091
+314092
+314093
+314094
+314095
+314096
+314097
+314098
+314099
+314100
+314101
+314102
+314103
+314104
+314105
+314106
+314107
+314108
+314109
+314110
+314111
+314112
+314113
+314114
+314115
+314116
+314117
+314118
+314119
+314120
+314121
+314122
+314123
+314124
+314125
+314126
+314127
+314128
+314129
+314130
+314131
+314132
+314133
+314134
+314135
+314136
+314137
+314138
+314139
+314140
+314141
+314142
+314143
+314144
+314145
+314146
+314147
+314148
+314149
+314150
+314151
+314152
+314153
+314154
+314155
+314156
+314157
+314158
+314159
+314160
+314161
+314162
+314163
+314164
+314165
+314166
+314167
+314168
+314169
+314170
+314171
+314172
+314173
+314174
+314175
+314176
+314177
+314178
+314179
+314180
+314181
+314182
+314183
+314184
+314185
+314186
+314187
+314188
+314189
+314190
+314191
+314192
+314193
+314194
+314195
+314196
+314197
+314198
+314199
+314200
+314201
+314202
+314203
+314204
+314205
+314206
+314207
+314208
+314209
+314210
+314211
+314212
+314213
+314214
+314215
+314216
+314217
+314218
+314219
+314220
+314221
+314222
+314223
+314224
+314225
+314226
+314227
+314228
+314229
+314230
+314231
+314232
+314233
+314234
+314235
+314236
+314237
+314238
+314239
+314240
+314241
+314242
+314243
+314244
+314245
+314246
+314247
+314248
+314249
+314250
+314251
+314252
+314253
+314254
+314255
+314256
+314257
+314258
+314259
+314260
+314261
+314262
+314263
+314264
+314265
+314266
+314267
+314268
+314269
+314270
+314271
+314272
+314273
+314274
+314275
+314276
+314277
+314278
+314279
+314280
+314281
+314282
+314283
+314284
+314285
+314286
+314287
+314288
+314289
+314290
+314291
+314292
+314293
+314294
+314295
+314296
+314297
+314298
+314299
+314300
+314301
+314302
+314303
+314304
+314305
+314306
+314307
+314308
+314309
+314310
+314311
+314312
+314313
+314314
+314315
+314316
+314317
+314318
+314319
+314320
+314321
+314322
+314323
+314324
+314325
+314326
+314327
+314328
+314329
+314330
+314331
+314332
+314333
+314334
+314335
+314336
+314337
+314338
+314339
+314340
+314341
+314342
+314343
+314344
+314345
+314346
+314347
+314348
+314349
+314350
+314351
+314352
+314353
+314354
+314355
+314356
+314357
+314358
+314359
+314360
+314361
+314362
+314363
+314364
+314365
+314366
+314367
+314368
+314369
+314370
+314371
+314372
+314373
+314374
+314375
+314376
+314377
+314378
+314379
+314380
+314381
+314382
+314383
+314384
+314385
+314386
+314387
+314388
+314389
+314390
+314391
+314392
+314393
+314394
+314395
+314396
+314397
+314398
+314399
+314400
+314401
+314402
+314403
+314404
+314405
+314406
+314407
+314408
+314409
+314410
+314411
+314412
+314413
+314414
+314415
+314416
+314417
+314418
+314419
+314420
+314421
+314422
+314423
+314424
+314425
+314426
+314427
+314428
+314429
+314430
+314431
+314432
+314433
+314434
+314435
+314436
+314437
+314438
+314439
+314440
+314441
+314442
+314443
+314444
+314445
+314446
+314447
+314448
+314449
+314450
+314451
+314452
+314453
+314454
+314455
+314456
+314457
+314458
+314459
+314460
+314461
+314462
+314463
+314464
+314465
+314466
+314467
+314468
+314469
+314470
+314471
+314472
+314473
+314474
+314475
+314476
+314477
+314478
+314479
+314480
+314481
+314482
+314483
+314484
+314485
+314486
+314487
+314488
+314489
+314490
+314491
+314492
+314493
+314494
+314495
+314496
+314497
+314498
+314499
+314500
+314501
+314502
+314503
+314504
+314505
+314506
+314507
+314508
+314509
+314510
+314511
+314512
+314513
+314514
+314515
+314516
+314517
+314518
+314519
+314520
+314521
+314522
+314523
+314524
+314525
+314526
+314527
+314528
+314529
+314530
+314531
+314532
+314533
+314534
+314535
+314536
+314537
+314538
+314539
+314540
+314541
+314542
+314543
+314544
+314545
+314546
+314547
+314548
+314549
+314550
+314551
+314552
+314553
+314554
+314555
+314556
+314557
+314558
+314559
+314560
+314561
+314562
+314563
+314564
+314565
+314566
+314567
+314568
+314569
+314570
+314571
+314572
+314573
+314574
+314575
+314576
+314577
+314578
+314579
+314580
+314581
+314582
+314583
+314584
+314585
+314586
+314587
+314588
+314589
+314590
+314591
+314592
+314593
+314594
+314595
+314596
+314597
+314598
+314599
+314600
+314601
+314602
+314603
+314604
+314605
+314606
+314607
+314608
+314609
+314610
+314611
+314612
+314613
+314614
+314615
+314616
+314617
+314618
+314619
+314620
+314621
+314622
+314623
+314624
+314625
+314626
+314627
+314628
+314629
+314630
+314631
+314632
+314633
+314634
+314635
+314636
+314637
+314638
+314639
+314640
+314641
+314642
+314643
+314644
+314645
+314646
+314647
+314648
+314649
+314650
+314651
+314652
+314653
+314654
+314655
+314656
+314657
+314658
+314659
+314660
+314661
+314662
+314663
+314664
+314665
+314666
+314667
+314668
+314669
+314670
+314671
+314672
+314673
+314674
+314675
+314676
+314677
+314678
+314679
+314680
+314681
+314682
+314683
+314684
+314685
+314686
+314687
+314688
+314689
+314690
+314691
+314692
+314693
+314694
+314695
+314696
+314697
+314698
+314699
+314700
+314701
+314702
+314703
+314704
+314705
+314706
+314707
+314708
+314709
+314710
+314711
+314712
+314713
+314714
+314715
+314716
+314717
+314718
+314719
+314720
+314721
+314722
+314723
+314724
+314725
+314726
+314727
+314728
+314729
+314730
+314731
+314732
+314733
+314734
+314735
+314736
+314737
+314738
+314739
+314740
+314741
+314742
+314743
+314744
+314745
+314746
+314747
+314748
+314749
+314750
+314751
+314752
+314753
+314754
+314755
+314756
+314757
+314758
+314759
+314760
+314761
+314762
+314763
+314764
+314765
+314766
+314767
+314768
+314769
+314770
+314771
+314772
+314773
+314774
+314775
+314776
+314777
+314778
+314779
+314780
+314781
+314782
+314783
+314784
+314785
+314786
+314787
+314788
+314789
+314790
+314791
+314792
+314793
+314794
+314795
+314796
+314797
+314798
+314799
+314800
+314801
+314802
+314803
+314804
+314805
+314806
+314807
+314808
+314809
+314810
+314811
+314812
+314813
+314814
+314815
+314816
+314817
+314818
+314819
+314820
+314821
+314822
+314823
+314824
+314825
+314826
+314827
+314828
+314829
+314830
+314831
+314832
+314833
+314834
+314835
+314836
+314837
+314838
+314839
+314840
+314841
+314842
+314843
+314844
+314845
+314846
+314847
+314848
+314849
+314850
+314851
+314852
+314853
+314854
+314855
+314856
+314857
+314858
+314859
+314860
+314861
+314862
+314863
+314864
+314865
+314866
+314867
+314868
+314869
+314870
+314871
+314872
+314873
+314874
+314875
+314876
+314877
+314878
+314879
+314880
+314881
+314882
+314883
+314884
+314885
+314886
+314887
+314888
+314889
+314890
+314891
+314892
+314893
+314894
+314895
+314896
+314897
+314898
+314899
+314900
+314901
+314902
+314903
+314904
+314905
+314906
+314907
+314908
+314909
+314910
+314911
+314912
+314913
+314914
+314915
+314916
+314917
+314918
+314919
+314920
+314921
+314922
+314923
+314924
+314925
+314926
+314927
+314928
+314929
+314930
+314931
+314932
+314933
+314934
+314935
+314936
+314937
+314938
+314939
+314940
+314941
+314942
+314943
+314944
+314945
+314946
+314947
+314948
+314949
+314950
+314951
+314952
+314953
+314954
+314955
+314956
+314957
+314958
+314959
+314960
+314961
+314962
+314963
+314964
+314965
+314966
+314967
+314968
+314969
+314970
+314971
+314972
+314973
+314974
+314975
+314976
+314977
+314978
+314979
+314980
+314981
+314982
+314983
+314984
+314985
+314986
+314987
+314988
+314989
+314990
+314991
+314992
+314993
+314994
+314995
+314996
+314997
+314998
+314999
+315000
+315001
+315002
+315003
+315004
+315005
+315006
+315007
+315008
+315009
+315010
+315011
+315012
+315013
+315014
+315015
+315016
+315017
+315018
+315019
+315020
+315021
+315022
+315023
+315024
+315025
+315026
+315027
+315028
+315029
+315030
+315031
+315032
+315033
+315034
+315035
+315036
+315037
+315038
+315039
+315040
+315041
+315042
+315043
+315044
+315045
+315046
+315047
+315048
+315049
+315050
+315051
+315052
+315053
+315054
+315055
+315056
+315057
+315058
+315059
+315060
+315061
+315062
+315063
+315064
+315065
+315066
+315067
+315068
+315069
+315070
+315071
+315072
+315073
+315074
+315075
+315076
+315077
+315078
+315079
+315080
+315081
+315082
+315083
+315084
+315085
+315086
+315087
+315088
+315089
+315090
+315091
+315092
+315093
+315094
+315095
+315096
+315097
+315098
+315099
+315100
+315101
+315102
+315103
+315104
+315105
+315106
+315107
+315108
+315109
+315110
+315111
+315112
+315113
+315114
+315115
+315116
+315117
+315118
+315119
+315120
+315121
+315122
+315123
+315124
+315125
+315126
+315127
+315128
+315129
+315130
+315131
+315132
+315133
+315134
+315135
+315136
+315137
+315138
+315139
+315140
+315141
+315142
+315143
+315144
+315145
+315146
+315147
+315148
+315149
+315150
+315151
+315152
+315153
+315154
+315155
+315156
+315157
+315158
+315159
+315160
+315161
+315162
+315163
+315164
+315165
+315166
+315167
+315168
+315169
+315170
+315171
+315172
+315173
+315174
+315175
+315176
+315177
+315178
+315179
+315180
+315181
+315182
+315183
+315184
+315185
+315186
+315187
+315188
+315189
+315190
+315191
+315192
+315193
+315194
+315195
+315196
+315197
+315198
+315199
+315200
+315201
+315202
+315203
+315204
+315205
+315206
+315207
+315208
+315209
+315210
+315211
+315212
+315213
+315214
+315215
+315216
+315217
+315218
+315219
+315220
+315221
+315222
+315223
+315224
+315225
+315226
+315227
+315228
+315229
+315230
+315231
+315232
+315233
+315234
+315235
+315236
+315237
+315238
+315239
+315240
+315241
+315242
+315243
+315244
+315245
+315246
+315247
+315248
+315249
+315250
+315251
+315252
+315253
+315254
+315255
+315256
+315257
+315258
+315259
+315260
+315261
+315262
+315263
+315264
+315265
+315266
+315267
+315268
+315269
+315270
+315271
+315272
+315273
+315274
+315275
+315276
+315277
+315278
+315279
+315280
+315281
+315282
+315283
+315284
+315285
+315286
+315287
+315288
+315289
+315290
+315291
+315292
+315293
+315294
+315295
+315296
+315297
+315298
+315299
+315300
+315301
+315302
+315303
+315304
+315305
+315306
+315307
+315308
+315309
+315310
+315311
+315312
+315313
+315314
+315315
+315316
+315317
+315318
+315319
+315320
+315321
+315322
+315323
+315324
+315325
+315326
+315327
+315328
+315329
+315330
+315331
+315332
+315333
+315334
+315335
+315336
+315337
+315338
+315339
+315340
+315341
+315342
+315343
+315344
+315345
+315346
+315347
+315348
+315349
+315350
+315351
+315352
+315353
+315354
+315355
+315356
+315357
+315358
+315359
+315360
+315361
+315362
+315363
+315364
+315365
+315366
+315367
+315368
+315369
+315370
+315371
+315372
+315373
+315374
+315375
+315376
+315377
+315378
+315379
+315380
+315381
+315382
+315383
+315384
+315385
+315386
+315387
+315388
+315389
+315390
+315391
+315392
+315393
+315394
+315395
+315396
+315397
+315398
+315399
+315400
+315401
+315402
+315403
+315404
+315405
+315406
+315407
+315408
+315409
+315410
+315411
+315412
+315413
+315414
+315415
+315416
+315417
+315418
+315419
+315420
+315421
+315422
+315423
+315424
+315425
+315426
+315427
+315428
+315429
+315430
+315431
+315432
+315433
+315434
+315435
+315436
+315437
+315438
+315439
+315440
+315441
+315442
+315443
+315444
+315445
+315446
+315447
+315448
+315449
+315450
+315451
+315452
+315453
+315454
+315455
+315456
+315457
+315458
+315459
+315460
+315461
+315462
+315463
+315464
+315465
+315466
+315467
+315468
+315469
+315470
+315471
+315472
+315473
+315474
+315475
+315476
+315477
+315478
+315479
+315480
+315481
+315482
+315483
+315484
+315485
+315486
+315487
+315488
+315489
+315490
+315491
+315492
+315493
+315494
+315495
+315496
+315497
+315498
+315499
+315500
+315501
+315502
+315503
+315504
+315505
+315506
+315507
+315508
+315509
+315510
+315511
+315512
+315513
+315514
+315515
+315516
+315517
+315518
+315519
+315520
+315521
+315522
+315523
+315524
+315525
+315526
+315527
+315528
+315529
+315530
+315531
+315532
+315533
+315534
+315535
+315536
+315537
+315538
+315539
+315540
+315541
+315542
+315543
+315544
+315545
+315546
+315547
+315548
+315549
+315550
+315551
+315552
+315553
+315554
+315555
+315556
+315557
+315558
+315559
+315560
+315561
+315562
+315563
+315564
+315565
+315566
+315567
+315568
+315569
+315570
+315571
+315572
+315573
+315574
+315575
+315576
+315577
+315578
+315579
+315580
+315581
+315582
+315583
+315584
+315585
+315586
+315587
+315588
+315589
+315590
+315591
+315592
+315593
+315594
+315595
+315596
+315597
+315598
+315599
+315600
+315601
+315602
+315603
+315604
+315605
+315606
+315607
+315608
+315609
+315610
+315611
+315612
+315613
+315614
+315615
+315616
+315617
+315618
+315619
+315620
+315621
+315622
+315623
+315624
+315625
+315626
+315627
+315628
+315629
+315630
+315631
+315632
+315633
+315634
+315635
+315636
+315637
+315638
+315639
+315640
+315641
+315642
+315643
+315644
+315645
+315646
+315647
+315648
+315649
+315650
+315651
+315652
+315653
+315654
+315655
+315656
+315657
+315658
+315659
+315660
+315661
+315662
+315663
+315664
+315665
+315666
+315667
+315668
+315669
+315670
+315671
+315672
+315673
+315674
+315675
+315676
+315677
+315678
+315679
+315680
+315681
+315682
+315683
+315684
+315685
+315686
+315687
+315688
+315689
+315690
+315691
+315692
+315693
+315694
+315695
+315696
+315697
+315698
+315699
+315700
+315701
+315702
+315703
+315704
+315705
+315706
+315707
+315708
+315709
+315710
+315711
+315712
+315713
+315714
+315715
+315716
+315717
+315718
+315719
+315720
+315721
+315722
+315723
+315724
+315725
+315726
+315727
+315728
+315729
+315730
+315731
+315732
+315733
+315734
+315735
+315736
+315737
+315738
+315739
+315740
+315741
+315742
+315743
+315744
+315745
+315746
+315747
+315748
+315749
+315750
+315751
+315752
+315753
+315754
+315755
+315756
+315757
+315758
+315759
+315760
+315761
+315762
+315763
+315764
+315765
+315766
+315767
+315768
+315769
+315770
+315771
+315772
+315773
+315774
+315775
+315776
+315777
+315778
+315779
+315780
+315781
+315782
+315783
+315784
+315785
+315786
+315787
+315788
+315789
+315790
+315791
+315792
+315793
+315794
+315795
+315796
+315797
+315798
+315799
+315800
+315801
+315802
+315803
+315804
+315805
+315806
+315807
+315808
+315809
+315810
+315811
+315812
+315813
+315814
+315815
+315816
+315817
+315818
+315819
+315820
+315821
+315822
+315823
+315824
+315825
+315826
+315827
+315828
+315829
+315830
+315831
+315832
+315833
+315834
+315835
+315836
+315837
+315838
+315839
+315840
+315841
+315842
+315843
+315844
+315845
+315846
+315847
+315848
+315849
+315850
+315851
+315852
+315853
+315854
+315855
+315856
+315857
+315858
+315859
+315860
+315861
+315862
+315863
+315864
+315865
+315866
+315867
+315868
+315869
+315870
+315871
+315872
+315873
+315874
+315875
+315876
+315877
+315878
+315879
+315880
+315881
+315882
+315883
+315884
+315885
+315886
+315887
+315888
+315889
+315890
+315891
+315892
+315893
+315894
+315895
+315896
+315897
+315898
+315899
+315900
+315901
+315902
+315903
+315904
+315905
+315906
+315907
+315908
+315909
+315910
+315911
+315912
+315913
+315914
+315915
+315916
+315917
+315918
+315919
+315920
+315921
+315922
+315923
+315924
+315925
+315926
+315927
+315928
+315929
+315930
+315931
+315932
+315933
+315934
+315935
+315936
+315937
+315938
+315939
+315940
+315941
+315942
+315943
+315944
+315945
+315946
+315947
+315948
+315949
+315950
+315951
+315952
+315953
+315954
+315955
+315956
+315957
+315958
+315959
+315960
+315961
+315962
+315963
+315964
+315965
+315966
+315967
+315968
+315969
+315970
+315971
+315972
+315973
+315974
+315975
+315976
+315977
+315978
+315979
+315980
+315981
+315982
+315983
+315984
+315985
+315986
+315987
+315988
+315989
+315990
+315991
+315992
+315993
+315994
+315995
+315996
+315997
+315998
+315999
+316000
+316001
+316002
+316003
+316004
+316005
+316006
+316007
+316008
+316009
+316010
+316011
+316012
+316013
+316014
+316015
+316016
+316017
+316018
+316019
+316020
+316021
+316022
+316023
+316024
+316025
+316026
+316027
+316028
+316029
+316030
+316031
+316032
+316033
+316034
+316035
+316036
+316037
+316038
+316039
+316040
+316041
+316042
+316043
+316044
+316045
+316046
+316047
+316048
+316049
+316050
+316051
+316052
+316053
+316054
+316055
+316056
+316057
+316058
+316059
+316060
+316061
+316062
+316063
+316064
+316065
+316066
+316067
+316068
+316069
+316070
+316071
+316072
+316073
+316074
+316075
+316076
+316077
+316078
+316079
+316080
+316081
+316082
+316083
+316084
+316085
+316086
+316087
+316088
+316089
+316090
+316091
+316092
+316093
+316094
+316095
+316096
+316097
+316098
+316099
+316100
+316101
+316102
+316103
+316104
+316105
+316106
+316107
+316108
+316109
+316110
+316111
+316112
+316113
+316114
+316115
+316116
+316117
+316118
+316119
+316120
+316121
+316122
+316123
+316124
+316125
+316126
+316127
+316128
+316129
+316130
+316131
+316132
+316133
+316134
+316135
+316136
+316137
+316138
+316139
+316140
+316141
+316142
+316143
+316144
+316145
+316146
+316147
+316148
+316149
+316150
+316151
+316152
+316153
+316154
+316155
+316156
+316157
+316158
+316159
+316160
+316161
+316162
+316163
+316164
+316165
+316166
+316167
+316168
+316169
+316170
+316171
+316172
+316173
+316174
+316175
+316176
+316177
+316178
+316179
+316180
+316181
+316182
+316183
+316184
+316185
+316186
+316187
+316188
+316189
+316190
+316191
+316192
+316193
+316194
+316195
+316196
+316197
+316198
+316199
+316200
+316201
+316202
+316203
+316204
+316205
+316206
+316207
+316208
+316209
+316210
+316211
+316212
+316213
+316214
+316215
+316216
+316217
+316218
+316219
+316220
+316221
+316222
+316223
+316224
+316225
+316226
+316227
+316228
+316229
+316230
+316231
+316232
+316233
+316234
+316235
+316236
+316237
+316238
+316239
+316240
+316241
+316242
+316243
+316244
+316245
+316246
+316247
+316248
+316249
+316250
+316251
+316252
+316253
+316254
+316255
+316256
+316257
+316258
+316259
+316260
+316261
+316262
+316263
+316264
+316265
+316266
+316267
+316268
+316269
+316270
+316271
+316272
+316273
+316274
+316275
+316276
+316277
+316278
+316279
+316280
+316281
+316282
+316283
+316284
+316285
+316286
+316287
+316288
+316289
+316290
+316291
+316292
+316293
+316294
+316295
+316296
+316297
+316298
+316299
+316300
+316301
+316302
+316303
+316304
+316305
+316306
+316307
+316308
+316309
+316310
+316311
+316312
+316313
+316314
+316315
+316316
+316317
+316318
+316319
+316320
+316321
+316322
+316323
+316324
+316325
+316326
+316327
+316328
+316329
+316330
+316331
+316332
+316333
+316334
+316335
+316336
+316337
+316338
+316339
+316340
+316341
+316342
+316343
+316344
+316345
+316346
+316347
+316348
+316349
+316350
+316351
+316352
+316353
+316354
+316355
+316356
+316357
+316358
+316359
+316360
+316361
+316362
+316363
+316364
+316365
+316366
+316367
+316368
+316369
+316370
+316371
+316372
+316373
+316374
+316375
+316376
+316377
+316378
+316379
+316380
+316381
+316382
+316383
+316384
+316385
+316386
+316387
+316388
+316389
+316390
+316391
+316392
+316393
+316394
+316395
+316396
+316397
+316398
+316399
+316400
+316401
+316402
+316403
+316404
+316405
+316406
+316407
+316408
+316409
+316410
+316411
+316412
+316413
+316414
+316415
+316416
+316417
+316418
+316419
+316420
+316421
+316422
+316423
+316424
+316425
+316426
+316427
+316428
+316429
+316430
+316431
+316432
+316433
+316434
+316435
+316436
+316437
+316438
+316439
+316440
+316441
+316442
+316443
+316444
+316445
+316446
+316447
+316448
+316449
+316450
+316451
+316452
+316453
+316454
+316455
+316456
+316457
+316458
+316459
+316460
+316461
+316462
+316463
+316464
+316465
+316466
+316467
+316468
+316469
+316470
+316471
+316472
+316473
+316474
+316475
+316476
+316477
+316478
+316479
+316480
+316481
+316482
+316483
+316484
+316485
+316486
+316487
+316488
+316489
+316490
+316491
+316492
+316493
+316494
+316495
+316496
+316497
+316498
+316499
+316500
+316501
+316502
+316503
+316504
+316505
+316506
+316507
+316508
+316509
+316510
+316511
+316512
+316513
+316514
+316515
+316516
+316517
+316518
+316519
+316520
+316521
+316522
+316523
+316524
+316525
+316526
+316527
+316528
+316529
+316530
+316531
+316532
+316533
+316534
+316535
+316536
+316537
+316538
+316539
+316540
+316541
+316542
+316543
+316544
+316545
+316546
+316547
+316548
+316549
+316550
+316551
+316552
+316553
+316554
+316555
+316556
+316557
+316558
+316559
+316560
+316561
+316562
+316563
+316564
+316565
+316566
+316567
+316568
+316569
+316570
+316571
+316572
+316573
+316574
+316575
+316576
+316577
+316578
+316579
+316580
+316581
+316582
+316583
+316584
+316585
+316586
+316587
+316588
+316589
+316590
+316591
+316592
+316593
+316594
+316595
+316596
+316597
+316598
+316599
+316600
+316601
+316602
+316603
+316604
+316605
+316606
+316607
+316608
+316609
+316610
+316611
+316612
+316613
+316614
+316615
+316616
+316617
+316618
+316619
+316620
+316621
+316622
+316623
+316624
+316625
+316626
+316627
+316628
+316629
+316630
+316631
+316632
+316633
+316634
+316635
+316636
+316637
+316638
+316639
+316640
+316641
+316642
+316643
+316644
+316645
+316646
+316647
+316648
+316649
+316650
+316651
+316652
+316653
+316654
+316655
+316656
+316657
+316658
+316659
+316660
+316661
+316662
+316663
+316664
+316665
+316666
+316667
+316668
+316669
+316670
+316671
+316672
+316673
+316674
+316675
+316676
+316677
+316678
+316679
+316680
+316681
+316682
+316683
+316684
+316685
+316686
+316687
+316688
+316689
+316690
+316691
+316692
+316693
+316694
+316695
+316696
+316697
+316698
+316699
+316700
+316701
+316702
+316703
+316704
+316705
+316706
+316707
+316708
+316709
+316710
+316711
+316712
+316713
+316714
+316715
+316716
+316717
+316718
+316719
+316720
+316721
+316722
+316723
+316724
+316725
+316726
+316727
+316728
+316729
+316730
+316731
+316732
+316733
+316734
+316735
+316736
+316737
+316738
+316739
+316740
+316741
+316742
+316743
+316744
+316745
+316746
+316747
+316748
+316749
+316750
+316751
+316752
+316753
+316754
+316755
+316756
+316757
+316758
+316759
+316760
+316761
+316762
+316763
+316764
+316765
+316766
+316767
+316768
+316769
+316770
+316771
+316772
+316773
+316774
+316775
+316776
+316777
+316778
+316779
+316780
+316781
+316782
+316783
+316784
+316785
+316786
+316787
+316788
+316789
+316790
+316791
+316792
+316793
+316794
+316795
+316796
+316797
+316798
+316799
+316800
+316801
+316802
+316803
+316804
+316805
+316806
+316807
+316808
+316809
+316810
+316811
+316812
+316813
+316814
+316815
+316816
+316817
+316818
+316819
+316820
+316821
+316822
+316823
+316824
+316825
+316826
+316827
+316828
+316829
+316830
+316831
+316832
+316833
+316834
+316835
+316836
+316837
+316838
+316839
+316840
+316841
+316842
+316843
+316844
+316845
+316846
+316847
+316848
+316849
+316850
+316851
+316852
+316853
+316854
+316855
+316856
+316857
+316858
+316859
+316860
+316861
+316862
+316863
+316864
+316865
+316866
+316867
+316868
+316869
+316870
+316871
+316872
+316873
+316874
+316875
+316876
+316877
+316878
+316879
+316880
+316881
+316882
+316883
+316884
+316885
+316886
+316887
+316888
+316889
+316890
+316891
+316892
+316893
+316894
+316895
+316896
+316897
+316898
+316899
+316900
+316901
+316902
+316903
+316904
+316905
+316906
+316907
+316908
+316909
+316910
+316911
+316912
+316913
+316914
+316915
+316916
+316917
+316918
+316919
+316920
+316921
+316922
+316923
+316924
+316925
+316926
+316927
+316928
+316929
+316930
+316931
+316932
+316933
+316934
+316935
+316936
+316937
+316938
+316939
+316940
+316941
+316942
+316943
+316944
+316945
+316946
+316947
+316948
+316949
+316950
+316951
+316952
+316953
+316954
+316955
+316956
+316957
+316958
+316959
+316960
+316961
+316962
+316963
+316964
+316965
+316966
+316967
+316968
+316969
+316970
+316971
+316972
+316973
+316974
+316975
+316976
+316977
+316978
+316979
+316980
+316981
+316982
+316983
+316984
+316985
+316986
+316987
+316988
+316989
+316990
+316991
+316992
+316993
+316994
+316995
+316996
+316997
+316998
+316999
+317000
+317001
+317002
+317003
+317004
+317005
+317006
+317007
+317008
+317009
+317010
+317011
+317012
+317013
+317014
+317015
+317016
+317017
+317018
+317019
+317020
+317021
+317022
+317023
+317024
+317025
+317026
+317027
+317028
+317029
+317030
+317031
+317032
+317033
+317034
+317035
+317036
+317037
+317038
+317039
+317040
+317041
+317042
+317043
+317044
+317045
+317046
+317047
+317048
+317049
+317050
+317051
+317052
+317053
+317054
+317055
+317056
+317057
+317058
+317059
+317060
+317061
+317062
+317063
+317064
+317065
+317066
+317067
+317068
+317069
+317070
+317071
+317072
+317073
+317074
+317075
+317076
+317077
+317078
+317079
+317080
+317081
+317082
+317083
+317084
+317085
+317086
+317087
+317088
+317089
+317090
+317091
+317092
+317093
+317094
+317095
+317096
+317097
+317098
+317099
+317100
+317101
+317102
+317103
+317104
+317105
+317106
+317107
+317108
+317109
+317110
+317111
+317112
+317113
+317114
+317115
+317116
+317117
+317118
+317119
+317120
+317121
+317122
+317123
+317124
+317125
+317126
+317127
+317128
+317129
+317130
+317131
+317132
+317133
+317134
+317135
+317136
+317137
+317138
+317139
+317140
+317141
+317142
+317143
+317144
+317145
+317146
+317147
+317148
+317149
+317150
+317151
+317152
+317153
+317154
+317155
+317156
+317157
+317158
+317159
+317160
+317161
+317162
+317163
+317164
+317165
+317166
+317167
+317168
+317169
+317170
+317171
+317172
+317173
+317174
+317175
+317176
+317177
+317178
+317179
+317180
+317181
+317182
+317183
+317184
+317185
+317186
+317187
+317188
+317189
+317190
+317191
+317192
+317193
+317194
+317195
+317196
+317197
+317198
+317199
+317200
+317201
+317202
+317203
+317204
+317205
+317206
+317207
+317208
+317209
+317210
+317211
+317212
+317213
+317214
+317215
+317216
+317217
+317218
+317219
+317220
+317221
+317222
+317223
+317224
+317225
+317226
+317227
+317228
+317229
+317230
+317231
+317232
+317233
+317234
+317235
+317236
+317237
+317238
+317239
+317240
+317241
+317242
+317243
+317244
+317245
+317246
+317247
+317248
+317249
+317250
+317251
+317252
+317253
+317254
+317255
+317256
+317257
+317258
+317259
+317260
+317261
+317262
+317263
+317264
+317265
+317266
+317267
+317268
+317269
+317270
+317271
+317272
+317273
+317274
+317275
+317276
+317277
+317278
+317279
+317280
+317281
+317282
+317283
+317284
+317285
+317286
+317287
+317288
+317289
+317290
+317291
+317292
+317293
+317294
+317295
+317296
+317297
+317298
+317299
+317300
+317301
+317302
+317303
+317304
+317305
+317306
+317307
+317308
+317309
+317310
+317311
+317312
+317313
+317314
+317315
+317316
+317317
+317318
+317319
+317320
+317321
+317322
+317323
+317324
+317325
+317326
+317327
+317328
+317329
+317330
+317331
+317332
+317333
+317334
+317335
+317336
+317337
+317338
+317339
+317340
+317341
+317342
+317343
+317344
+317345
+317346
+317347
+317348
+317349
+317350
+317351
+317352
+317353
+317354
+317355
+317356
+317357
+317358
+317359
+317360
+317361
+317362
+317363
+317364
+317365
+317366
+317367
+317368
+317369
+317370
+317371
+317372
+317373
+317374
+317375
+317376
+317377
+317378
+317379
+317380
+317381
+317382
+317383
+317384
+317385
+317386
+317387
+317388
+317389
+317390
+317391
+317392
+317393
+317394
+317395
+317396
+317397
+317398
+317399
+317400
+317401
+317402
+317403
+317404
+317405
+317406
+317407
+317408
+317409
+317410
+317411
+317412
+317413
+317414
+317415
+317416
+317417
+317418
+317419
+317420
+317421
+317422
+317423
+317424
+317425
+317426
+317427
+317428
+317429
+317430
+317431
+317432
+317433
+317434
+317435
+317436
+317437
+317438
+317439
+317440
+317441
+317442
+317443
+317444
+317445
+317446
+317447
+317448
+317449
+317450
+317451
+317452
+317453
+317454
+317455
+317456
+317457
+317458
+317459
+317460
+317461
+317462
+317463
+317464
+317465
+317466
+317467
+317468
+317469
+317470
+317471
+317472
+317473
+317474
+317475
+317476
+317477
+317478
+317479
+317480
+317481
+317482
+317483
+317484
+317485
+317486
+317487
+317488
+317489
+317490
+317491
+317492
+317493
+317494
+317495
+317496
+317497
+317498
+317499
+317500
+317501
+317502
+317503
+317504
+317505
+317506
+317507
+317508
+317509
+317510
+317511
+317512
+317513
+317514
+317515
+317516
+317517
+317518
+317519
+317520
+317521
+317522
+317523
+317524
+317525
+317526
+317527
+317528
+317529
+317530
+317531
+317532
+317533
+317534
+317535
+317536
+317537
+317538
+317539
+317540
+317541
+317542
+317543
+317544
+317545
+317546
+317547
+317548
+317549
+317550
+317551
+317552
+317553
+317554
+317555
+317556
+317557
+317558
+317559
+317560
+317561
+317562
+317563
+317564
+317565
+317566
+317567
+317568
+317569
+317570
+317571
+317572
+317573
+317574
+317575
+317576
+317577
+317578
+317579
+317580
+317581
+317582
+317583
+317584
+317585
+317586
+317587
+317588
+317589
+317590
+317591
+317592
+317593
+317594
+317595
+317596
+317597
+317598
+317599
+317600
+317601
+317602
+317603
+317604
+317605
+317606
+317607
+317608
+317609
+317610
+317611
+317612
+317613
+317614
+317615
+317616
+317617
+317618
+317619
+317620
+317621
+317622
+317623
+317624
+317625
+317626
+317627
+317628
+317629
+317630
+317631
+317632
+317633
+317634
+317635
+317636
+317637
+317638
+317639
+317640
+317641
+317642
+317643
+317644
+317645
+317646
+317647
+317648
+317649
+317650
+317651
+317652
+317653
+317654
+317655
+317656
+317657
+317658
+317659
+317660
+317661
+317662
+317663
+317664
+317665
+317666
+317667
+317668
+317669
+317670
+317671
+317672
+317673
+317674
+317675
+317676
+317677
+317678
+317679
+317680
+317681
+317682
+317683
+317684
+317685
+317686
+317687
+317688
+317689
+317690
+317691
+317692
+317693
+317694
+317695
+317696
+317697
+317698
+317699
+317700
+317701
+317702
+317703
+317704
+317705
+317706
+317707
+317708
+317709
+317710
+317711
+317712
+317713
+317714
+317715
+317716
+317717
+317718
+317719
+317720
+317721
+317722
+317723
+317724
+317725
+317726
+317727
+317728
+317729
+317730
+317731
+317732
+317733
+317734
+317735
+317736
+317737
+317738
+317739
+317740
+317741
+317742
+317743
+317744
+317745
+317746
+317747
+317748
+317749
+317750
+317751
+317752
+317753
+317754
+317755
+317756
+317757
+317758
+317759
+317760
+317761
+317762
+317763
+317764
+317765
+317766
+317767
+317768
+317769
+317770
+317771
+317772
+317773
+317774
+317775
+317776
+317777
+317778
+317779
+317780
+317781
+317782
+317783
+317784
+317785
+317786
+317787
+317788
+317789
+317790
+317791
+317792
+317793
+317794
+317795
+317796
+317797
+317798
+317799
+317800
+317801
+317802
+317803
+317804
+317805
+317806
+317807
+317808
+317809
+317810
+317811
+317812
+317813
+317814
+317815
+317816
+317817
+317818
+317819
+317820
+317821
+317822
+317823
+317824
+317825
+317826
+317827
+317828
+317829
+317830
+317831
+317832
+317833
+317834
+317835
+317836
+317837
+317838
+317839
+317840
+317841
+317842
+317843
+317844
+317845
+317846
+317847
+317848
+317849
+317850
+317851
+317852
+317853
+317854
+317855
+317856
+317857
+317858
+317859
+317860
+317861
+317862
+317863
+317864
+317865
+317866
+317867
+317868
+317869
+317870
+317871
+317872
+317873
+317874
+317875
+317876
+317877
+317878
+317879
+317880
+317881
+317882
+317883
+317884
+317885
+317886
+317887
+317888
+317889
+317890
+317891
+317892
+317893
+317894
+317895
+317896
+317897
+317898
+317899
+317900
+317901
+317902
+317903
+317904
+317905
+317906
+317907
+317908
+317909
+317910
+317911
+317912
+317913
+317914
+317915
+317916
+317917
+317918
+317919
+317920
+317921
+317922
+317923
+317924
+317925
+317926
+317927
+317928
+317929
+317930
+317931
+317932
+317933
+317934
+317935
+317936
+317937
+317938
+317939
+317940
+317941
+317942
+317943
+317944
+317945
+317946
+317947
+317948
+317949
+317950
+317951
+317952
+317953
+317954
+317955
+317956
+317957
+317958
+317959
+317960
+317961
+317962
+317963
+317964
+317965
+317966
+317967
+317968
+317969
+317970
+317971
+317972
+317973
+317974
+317975
+317976
+317977
+317978
+317979
+317980
+317981
+317982
+317983
+317984
+317985
+317986
+317987
+317988
+317989
+317990
+317991
+317992
+317993
+317994
+317995
+317996
+317997
+317998
+317999
+318000
+318001
+318002
+318003
+318004
+318005
+318006
+318007
+318008
+318009
+318010
+318011
+318012
+318013
+318014
+318015
+318016
+318017
+318018
+318019
+318020
+318021
+318022
+318023
+318024
+318025
+318026
+318027
+318028
+318029
+318030
+318031
+318032
+318033
+318034
+318035
+318036
+318037
+318038
+318039
+318040
+318041
+318042
+318043
+318044
+318045
+318046
+318047
+318048
+318049
+318050
+318051
+318052
+318053
+318054
+318055
+318056
+318057
+318058
+318059
+318060
+318061
+318062
+318063
+318064
+318065
+318066
+318067
+318068
+318069
+318070
+318071
+318072
+318073
+318074
+318075
+318076
+318077
+318078
+318079
+318080
+318081
+318082
+318083
+318084
+318085
+318086
+318087
+318088
+318089
+318090
+318091
+318092
+318093
+318094
+318095
+318096
+318097
+318098
+318099
+318100
+318101
+318102
+318103
+318104
+318105
+318106
+318107
+318108
+318109
+318110
+318111
+318112
+318113
+318114
+318115
+318116
+318117
+318118
+318119
+318120
+318121
+318122
+318123
+318124
+318125
+318126
+318127
+318128
+318129
+318130
+318131
+318132
+318133
+318134
+318135
+318136
+318137
+318138
+318139
+318140
+318141
+318142
+318143
+318144
+318145
+318146
+318147
+318148
+318149
+318150
+318151
+318152
+318153
+318154
+318155
+318156
+318157
+318158
+318159
+318160
+318161
+318162
+318163
+318164
+318165
+318166
+318167
+318168
+318169
+318170
+318171
+318172
+318173
+318174
+318175
+318176
+318177
+318178
+318179
+318180
+318181
+318182
+318183
+318184
+318185
+318186
+318187
+318188
+318189
+318190
+318191
+318192
+318193
+318194
+318195
+318196
+318197
+318198
+318199
+318200
+318201
+318202
+318203
+318204
+318205
+318206
+318207
+318208
+318209
+318210
+318211
+318212
+318213
+318214
+318215
+318216
+318217
+318218
+318219
+318220
+318221
+318222
+318223
+318224
+318225
+318226
+318227
+318228
+318229
+318230
+318231
+318232
+318233
+318234
+318235
+318236
+318237
+318238
+318239
+318240
+318241
+318242
+318243
+318244
+318245
+318246
+318247
+318248
+318249
+318250
+318251
+318252
+318253
+318254
+318255
+318256
+318257
+318258
+318259
+318260
+318261
+318262
+318263
+318264
+318265
+318266
+318267
+318268
+318269
+318270
+318271
+318272
+318273
+318274
+318275
+318276
+318277
+318278
+318279
+318280
+318281
+318282
+318283
+318284
+318285
+318286
+318287
+318288
+318289
+318290
+318291
+318292
+318293
+318294
+318295
+318296
+318297
+318298
+318299
+318300
+318301
+318302
+318303
+318304
+318305
+318306
+318307
+318308
+318309
+318310
+318311
+318312
+318313
+318314
+318315
+318316
+318317
+318318
+318319
+318320
+318321
+318322
+318323
+318324
+318325
+318326
+318327
+318328
+318329
+318330
+318331
+318332
+318333
+318334
+318335
+318336
+318337
+318338
+318339
+318340
+318341
+318342
+318343
+318344
+318345
+318346
+318347
+318348
+318349
+318350
+318351
+318352
+318353
+318354
+318355
+318356
+318357
+318358
+318359
+318360
+318361
+318362
+318363
+318364
+318365
+318366
+318367
+318368
+318369
+318370
+318371
+318372
+318373
+318374
+318375
+318376
+318377
+318378
+318379
+318380
+318381
+318382
+318383
+318384
+318385
+318386
+318387
+318388
+318389
+318390
+318391
+318392
+318393
+318394
+318395
+318396
+318397
+318398
+318399
+318400
+318401
+318402
+318403
+318404
+318405
+318406
+318407
+318408
+318409
+318410
+318411
+318412
+318413
+318414
+318415
+318416
+318417
+318418
+318419
+318420
+318421
+318422
+318423
+318424
+318425
+318426
+318427
+318428
+318429
+318430
+318431
+318432
+318433
+318434
+318435
+318436
+318437
+318438
+318439
+318440
+318441
+318442
+318443
+318444
+318445
+318446
+318447
+318448
+318449
+318450
+318451
+318452
+318453
+318454
+318455
+318456
+318457
+318458
+318459
+318460
+318461
+318462
+318463
+318464
+318465
+318466
+318467
+318468
+318469
+318470
+318471
+318472
+318473
+318474
+318475
+318476
+318477
+318478
+318479
+318480
+318481
+318482
+318483
+318484
+318485
+318486
+318487
+318488
+318489
+318490
+318491
+318492
+318493
+318494
+318495
+318496
+318497
+318498
+318499
+318500
+318501
+318502
+318503
+318504
+318505
+318506
+318507
+318508
+318509
+318510
+318511
+318512
+318513
+318514
+318515
+318516
+318517
+318518
+318519
+318520
+318521
+318522
+318523
+318524
+318525
+318526
+318527
+318528
+318529
+318530
+318531
+318532
+318533
+318534
+318535
+318536
+318537
+318538
+318539
+318540
+318541
+318542
+318543
+318544
+318545
+318546
+318547
+318548
+318549
+318550
+318551
+318552
+318553
+318554
+318555
+318556
+318557
+318558
+318559
+318560
+318561
+318562
+318563
+318564
+318565
+318566
+318567
+318568
+318569
+318570
+318571
+318572
+318573
+318574
+318575
+318576
+318577
+318578
+318579
+318580
+318581
+318582
+318583
+318584
+318585
+318586
+318587
+318588
+318589
+318590
+318591
+318592
+318593
+318594
+318595
+318596
+318597
+318598
+318599
+318600
+318601
+318602
+318603
+318604
+318605
+318606
+318607
+318608
+318609
+318610
+318611
+318612
+318613
+318614
+318615
+318616
+318617
+318618
+318619
+318620
+318621
+318622
+318623
+318624
+318625
+318626
+318627
+318628
+318629
+318630
+318631
+318632
+318633
+318634
+318635
+318636
+318637
+318638
+318639
+318640
+318641
+318642
+318643
+318644
+318645
+318646
+318647
+318648
+318649
+318650
+318651
+318652
+318653
+318654
+318655
+318656
+318657
+318658
+318659
+318660
+318661
+318662
+318663
+318664
+318665
+318666
+318667
+318668
+318669
+318670
+318671
+318672
+318673
+318674
+318675
+318676
+318677
+318678
+318679
+318680
+318681
+318682
+318683
+318684
+318685
+318686
+318687
+318688
+318689
+318690
+318691
+318692
+318693
+318694
+318695
+318696
+318697
+318698
+318699
+318700
+318701
+318702
+318703
+318704
+318705
+318706
+318707
+318708
+318709
+318710
+318711
+318712
+318713
+318714
+318715
+318716
+318717
+318718
+318719
+318720
+318721
+318722
+318723
+318724
+318725
+318726
+318727
+318728
+318729
+318730
+318731
+318732
+318733
+318734
+318735
+318736
+318737
+318738
+318739
+318740
+318741
+318742
+318743
+318744
+318745
+318746
+318747
+318748
+318749
+318750
+318751
+318752
+318753
+318754
+318755
+318756
+318757
+318758
+318759
+318760
+318761
+318762
+318763
+318764
+318765
+318766
+318767
+318768
+318769
+318770
+318771
+318772
+318773
+318774
+318775
+318776
+318777
+318778
+318779
+318780
+318781
+318782
+318783
+318784
+318785
+318786
+318787
+318788
+318789
+318790
+318791
+318792
+318793
+318794
+318795
+318796
+318797
+318798
+318799
+318800
+318801
+318802
+318803
+318804
+318805
+318806
+318807
+318808
+318809
+318810
+318811
+318812
+318813
+318814
+318815
+318816
+318817
+318818
+318819
+318820
+318821
+318822
+318823
+318824
+318825
+318826
+318827
+318828
+318829
+318830
+318831
+318832
+318833
+318834
+318835
+318836
+318837
+318838
+318839
+318840
+318841
+318842
+318843
+318844
+318845
+318846
+318847
+318848
+318849
+318850
+318851
+318852
+318853
+318854
+318855
+318856
+318857
+318858
+318859
+318860
+318861
+318862
+318863
+318864
+318865
+318866
+318867
+318868
+318869
+318870
+318871
+318872
+318873
+318874
+318875
+318876
+318877
+318878
+318879
+318880
+318881
+318882
+318883
+318884
+318885
+318886
+318887
+318888
+318889
+318890
+318891
+318892
+318893
+318894
+318895
+318896
+318897
+318898
+318899
+318900
+318901
+318902
+318903
+318904
+318905
+318906
+318907
+318908
+318909
+318910
+318911
+318912
+318913
+318914
+318915
+318916
+318917
+318918
+318919
+318920
+318921
+318922
+318923
+318924
+318925
+318926
+318927
+318928
+318929
+318930
+318931
+318932
+318933
+318934
+318935
+318936
+318937
+318938
+318939
+318940
+318941
+318942
+318943
+318944
+318945
+318946
+318947
+318948
+318949
+318950
+318951
+318952
+318953
+318954
+318955
+318956
+318957
+318958
+318959
+318960
+318961
+318962
+318963
+318964
+318965
+318966
+318967
+318968
+318969
+318970
+318971
+318972
+318973
+318974
+318975
+318976
+318977
+318978
+318979
+318980
+318981
+318982
+318983
+318984
+318985
+318986
+318987
+318988
+318989
+318990
+318991
+318992
+318993
+318994
+318995
+318996
+318997
+318998
+318999
+319000
+319001
+319002
+319003
+319004
+319005
+319006
+319007
+319008
+319009
+319010
+319011
+319012
+319013
+319014
+319015
+319016
+319017
+319018
+319019
+319020
+319021
+319022
+319023
+319024
+319025
+319026
+319027
+319028
+319029
+319030
+319031
+319032
+319033
+319034
+319035
+319036
+319037
+319038
+319039
+319040
+319041
+319042
+319043
+319044
+319045
+319046
+319047
+319048
+319049
+319050
+319051
+319052
+319053
+319054
+319055
+319056
+319057
+319058
+319059
+319060
+319061
+319062
+319063
+319064
+319065
+319066
+319067
+319068
+319069
+319070
+319071
+319072
+319073
+319074
+319075
+319076
+319077
+319078
+319079
+319080
+319081
+319082
+319083
+319084
+319085
+319086
+319087
+319088
+319089
+319090
+319091
+319092
+319093
+319094
+319095
+319096
+319097
+319098
+319099
+319100
+319101
+319102
+319103
+319104
+319105
+319106
+319107
+319108
+319109
+319110
+319111
+319112
+319113
+319114
+319115
+319116
+319117
+319118
+319119
+319120
+319121
+319122
+319123
+319124
+319125
+319126
+319127
+319128
+319129
+319130
+319131
+319132
+319133
+319134
+319135
+319136
+319137
+319138
+319139
+319140
+319141
+319142
+319143
+319144
+319145
+319146
+319147
+319148
+319149
+319150
+319151
+319152
+319153
+319154
+319155
+319156
+319157
+319158
+319159
+319160
+319161
+319162
+319163
+319164
+319165
+319166
+319167
+319168
+319169
+319170
+319171
+319172
+319173
+319174
+319175
+319176
+319177
+319178
+319179
+319180
+319181
+319182
+319183
+319184
+319185
+319186
+319187
+319188
+319189
+319190
+319191
+319192
+319193
+319194
+319195
+319196
+319197
+319198
+319199
+319200
+319201
+319202
+319203
+319204
+319205
+319206
+319207
+319208
+319209
+319210
+319211
+319212
+319213
+319214
+319215
+319216
+319217
+319218
+319219
+319220
+319221
+319222
+319223
+319224
+319225
+319226
+319227
+319228
+319229
+319230
+319231
+319232
+319233
+319234
+319235
+319236
+319237
+319238
+319239
+319240
+319241
+319242
+319243
+319244
+319245
+319246
+319247
+319248
+319249
+319250
+319251
+319252
+319253
+319254
+319255
+319256
+319257
+319258
+319259
+319260
+319261
+319262
+319263
+319264
+319265
+319266
+319267
+319268
+319269
+319270
+319271
+319272
+319273
+319274
+319275
+319276
+319277
+319278
+319279
+319280
+319281
+319282
+319283
+319284
+319285
+319286
+319287
+319288
+319289
+319290
+319291
+319292
+319293
+319294
+319295
+319296
+319297
+319298
+319299
+319300
+319301
+319302
+319303
+319304
+319305
+319306
+319307
+319308
+319309
+319310
+319311
+319312
+319313
+319314
+319315
+319316
+319317
+319318
+319319
+319320
+319321
+319322
+319323
+319324
+319325
+319326
+319327
+319328
+319329
+319330
+319331
+319332
+319333
+319334
+319335
+319336
+319337
+319338
+319339
+319340
+319341
+319342
+319343
+319344
+319345
+319346
+319347
+319348
+319349
+319350
+319351
+319352
+319353
+319354
+319355
+319356
+319357
+319358
+319359
+319360
+319361
+319362
+319363
+319364
+319365
+319366
+319367
+319368
+319369
+319370
+319371
+319372
+319373
+319374
+319375
+319376
+319377
+319378
+319379
+319380
+319381
+319382
+319383
+319384
+319385
+319386
+319387
+319388
+319389
+319390
+319391
+319392
+319393
+319394
+319395
+319396
+319397
+319398
+319399
+319400
+319401
+319402
+319403
+319404
+319405
+319406
+319407
+319408
+319409
+319410
+319411
+319412
+319413
+319414
+319415
+319416
+319417
+319418
+319419
+319420
+319421
+319422
+319423
+319424
+319425
+319426
+319427
+319428
+319429
+319430
+319431
+319432
+319433
+319434
+319435
+319436
+319437
+319438
+319439
+319440
+319441
+319442
+319443
+319444
+319445
+319446
+319447
+319448
+319449
+319450
+319451
+319452
+319453
+319454
+319455
+319456
+319457
+319458
+319459
+319460
+319461
+319462
+319463
+319464
+319465
+319466
+319467
+319468
+319469
+319470
+319471
+319472
+319473
+319474
+319475
+319476
+319477
+319478
+319479
+319480
+319481
+319482
+319483
+319484
+319485
+319486
+319487
+319488
+319489
+319490
+319491
+319492
+319493
+319494
+319495
+319496
+319497
+319498
+319499
+319500
+319501
+319502
+319503
+319504
+319505
+319506
+319507
+319508
+319509
+319510
+319511
+319512
+319513
+319514
+319515
+319516
+319517
+319518
+319519
+319520
+319521
+319522
+319523
+319524
+319525
+319526
+319527
+319528
+319529
+319530
+319531
+319532
+319533
+319534
+319535
+319536
+319537
+319538
+319539
+319540
+319541
+319542
+319543
+319544
+319545
+319546
+319547
+319548
+319549
+319550
+319551
+319552
+319553
+319554
+319555
+319556
+319557
+319558
+319559
+319560
+319561
+319562
+319563
+319564
+319565
+319566
+319567
+319568
+319569
+319570
+319571
+319572
+319573
+319574
+319575
+319576
+319577
+319578
+319579
+319580
+319581
+319582
+319583
+319584
+319585
+319586
+319587
+319588
+319589
+319590
+319591
+319592
+319593
+319594
+319595
+319596
+319597
+319598
+319599
+319600
+319601
+319602
+319603
+319604
+319605
+319606
+319607
+319608
+319609
+319610
+319611
+319612
+319613
+319614
+319615
+319616
+319617
+319618
+319619
+319620
+319621
+319622
+319623
+319624
+319625
+319626
+319627
+319628
+319629
+319630
+319631
+319632
+319633
+319634
+319635
+319636
+319637
+319638
+319639
+319640
+319641
+319642
+319643
+319644
+319645
+319646
+319647
+319648
+319649
+319650
+319651
+319652
+319653
+319654
+319655
+319656
+319657
+319658
+319659
+319660
+319661
+319662
+319663
+319664
+319665
+319666
+319667
+319668
+319669
+319670
+319671
+319672
+319673
+319674
+319675
+319676
+319677
+319678
+319679
+319680
+319681
+319682
+319683
+319684
+319685
+319686
+319687
+319688
+319689
+319690
+319691
+319692
+319693
+319694
+319695
+319696
+319697
+319698
+319699
+319700
+319701
+319702
+319703
+319704
+319705
+319706
+319707
+319708
+319709
+319710
+319711
+319712
+319713
+319714
+319715
+319716
+319717
+319718
+319719
+319720
+319721
+319722
+319723
+319724
+319725
+319726
+319727
+319728
+319729
+319730
+319731
+319732
+319733
+319734
+319735
+319736
+319737
+319738
+319739
+319740
+319741
+319742
+319743
+319744
+319745
+319746
+319747
+319748
+319749
+319750
+319751
+319752
+319753
+319754
+319755
+319756
+319757
+319758
+319759
+319760
+319761
+319762
+319763
+319764
+319765
+319766
+319767
+319768
+319769
+319770
+319771
+319772
+319773
+319774
+319775
+319776
+319777
+319778
+319779
+319780
+319781
+319782
+319783
+319784
+319785
+319786
+319787
+319788
+319789
+319790
+319791
+319792
+319793
+319794
+319795
+319796
+319797
+319798
+319799
+319800
+319801
+319802
+319803
+319804
+319805
+319806
+319807
+319808
+319809
+319810
+319811
+319812
+319813
+319814
+319815
+319816
+319817
+319818
+319819
+319820
+319821
+319822
+319823
+319824
+319825
+319826
+319827
+319828
+319829
+319830
+319831
+319832
+319833
+319834
+319835
+319836
+319837
+319838
+319839
+319840
+319841
+319842
+319843
+319844
+319845
+319846
+319847
+319848
+319849
+319850
+319851
+319852
+319853
+319854
+319855
+319856
+319857
+319858
+319859
+319860
+319861
+319862
+319863
+319864
+319865
+319866
+319867
+319868
+319869
+319870
+319871
+319872
+319873
+319874
+319875
+319876
+319877
+319878
+319879
+319880
+319881
+319882
+319883
+319884
+319885
+319886
+319887
+319888
+319889
+319890
+319891
+319892
+319893
+319894
+319895
+319896
+319897
+319898
+319899
+319900
+319901
+319902
+319903
+319904
+319905
+319906
+319907
+319908
+319909
+319910
+319911
+319912
+319913
+319914
+319915
+319916
+319917
+319918
+319919
+319920
+319921
+319922
+319923
+319924
+319925
+319926
+319927
+319928
+319929
+319930
+319931
+319932
+319933
+319934
+319935
+319936
+319937
+319938
+319939
+319940
+319941
+319942
+319943
+319944
+319945
+319946
+319947
+319948
+319949
+319950
+319951
+319952
+319953
+319954
+319955
+319956
+319957
+319958
+319959
+319960
+319961
+319962
+319963
+319964
+319965
+319966
+319967
+319968
+319969
+319970
+319971
+319972
+319973
+319974
+319975
+319976
+319977
+319978
+319979
+319980
+319981
+319982
+319983
+319984
+319985
+319986
+319987
+319988
+319989
+319990
+319991
+319992
+319993
+319994
+319995
+319996
+319997
+319998
+319999
+320000
+320001
+320002
+320003
+320004
+320005
+320006
+320007
+320008
+320009
+320010
+320011
+320012
+320013
+320014
+320015
+320016
+320017
+320018
+320019
+320020
+320021
+320022
+320023
+320024
+320025
+320026
+320027
+320028
+320029
+320030
+320031
+320032
+320033
+320034
+320035
+320036
+320037
+320038
+320039
+320040
+320041
+320042
+320043
+320044
+320045
+320046
+320047
+320048
+320049
+320050
+320051
+320052
+320053
+320054
+320055
+320056
+320057
+320058
+320059
+320060
+320061
+320062
+320063
+320064
+320065
+320066
+320067
+320068
+320069
+320070
+320071
+320072
+320073
+320074
+320075
+320076
+320077
+320078
+320079
+320080
+320081
+320082
+320083
+320084
+320085
+320086
+320087
+320088
+320089
+320090
+320091
+320092
+320093
+320094
+320095
+320096
+320097
+320098
+320099
+320100
+320101
+320102
+320103
+320104
+320105
+320106
+320107
+320108
+320109
+320110
+320111
+320112
+320113
+320114
+320115
+320116
+320117
+320118
+320119
+320120
+320121
+320122
+320123
+320124
+320125
+320126
+320127
+320128
+320129
+320130
+320131
+320132
+320133
+320134
+320135
+320136
+320137
+320138
+320139
+320140
+320141
+320142
+320143
+320144
+320145
+320146
+320147
+320148
+320149
+320150
+320151
+320152
+320153
+320154
+320155
+320156
+320157
+320158
+320159
+320160
+320161
+320162
+320163
+320164
+320165
+320166
+320167
+320168
+320169
+320170
+320171
+320172
+320173
+320174
+320175
+320176
+320177
+320178
+320179
+320180
+320181
+320182
+320183
+320184
+320185
+320186
+320187
+320188
+320189
+320190
+320191
+320192
+320193
+320194
+320195
+320196
+320197
+320198
+320199
+320200
+320201
+320202
+320203
+320204
+320205
+320206
+320207
+320208
+320209
+320210
+320211
+320212
+320213
+320214
+320215
+320216
+320217
+320218
+320219
+320220
+320221
+320222
+320223
+320224
+320225
+320226
+320227
+320228
+320229
+320230
+320231
+320232
+320233
+320234
+320235
+320236
+320237
+320238
+320239
+320240
+320241
+320242
+320243
+320244
+320245
+320246
+320247
+320248
+320249
+320250
+320251
+320252
+320253
+320254
+320255
+320256
+320257
+320258
+320259
+320260
+320261
+320262
+320263
+320264
+320265
+320266
+320267
+320268
+320269
+320270
+320271
+320272
+320273
+320274
+320275
+320276
+320277
+320278
+320279
+320280
+320281
+320282
+320283
+320284
+320285
+320286
+320287
+320288
+320289
+320290
+320291
+320292
+320293
+320294
+320295
+320296
+320297
+320298
+320299
+320300
+320301
+320302
+320303
+320304
+320305
+320306
+320307
+320308
+320309
+320310
+320311
+320312
+320313
+320314
+320315
+320316
+320317
+320318
+320319
+320320
+320321
+320322
+320323
+320324
+320325
+320326
+320327
+320328
+320329
+320330
+320331
+320332
+320333
+320334
+320335
+320336
+320337
+320338
+320339
+320340
+320341
+320342
+320343
+320344
+320345
+320346
+320347
+320348
+320349
+320350
+320351
+320352
+320353
+320354
+320355
+320356
+320357
+320358
+320359
+320360
+320361
+320362
+320363
+320364
+320365
+320366
+320367
+320368
+320369
+320370
+320371
+320372
+320373
+320374
+320375
+320376
+320377
+320378
+320379
+320380
+320381
+320382
+320383
+320384
+320385
+320386
+320387
+320388
+320389
+320390
+320391
+320392
+320393
+320394
+320395
+320396
+320397
+320398
+320399
+320400
+320401
+320402
+320403
+320404
+320405
+320406
+320407
+320408
+320409
+320410
+320411
+320412
+320413
+320414
+320415
+320416
+320417
+320418
+320419
+320420
+320421
+320422
+320423
+320424
+320425
+320426
+320427
+320428
+320429
+320430
+320431
+320432
+320433
+320434
+320435
+320436
+320437
+320438
+320439
+320440
+320441
+320442
+320443
+320444
+320445
+320446
+320447
+320448
+320449
+320450
+320451
+320452
+320453
+320454
+320455
+320456
+320457
+320458
+320459
+320460
+320461
+320462
+320463
+320464
+320465
+320466
+320467
+320468
+320469
+320470
+320471
+320472
+320473
+320474
+320475
+320476
+320477
+320478
+320479
+320480
+320481
+320482
+320483
+320484
+320485
+320486
+320487
+320488
+320489
+320490
+320491
+320492
+320493
+320494
+320495
+320496
+320497
+320498
+320499
+320500
+320501
+320502
+320503
+320504
+320505
+320506
+320507
+320508
+320509
+320510
+320511
+320512
+320513
+320514
+320515
+320516
+320517
+320518
+320519
+320520
+320521
+320522
+320523
+320524
+320525
+320526
+320527
+320528
+320529
+320530
+320531
+320532
+320533
+320534
+320535
+320536
+320537
+320538
+320539
+320540
+320541
+320542
+320543
+320544
+320545
+320546
+320547
+320548
+320549
+320550
+320551
+320552
+320553
+320554
+320555
+320556
+320557
+320558
+320559
+320560
+320561
+320562
+320563
+320564
+320565
+320566
+320567
+320568
+320569
+320570
+320571
+320572
+320573
+320574
+320575
+320576
+320577
+320578
+320579
+320580
+320581
+320582
+320583
+320584
+320585
+320586
+320587
+320588
+320589
+320590
+320591
+320592
+320593
+320594
+320595
+320596
+320597
+320598
+320599
+320600
+320601
+320602
+320603
+320604
+320605
+320606
+320607
+320608
+320609
+320610
+320611
+320612
+320613
+320614
+320615
+320616
+320617
+320618
+320619
+320620
+320621
+320622
+320623
+320624
+320625
+320626
+320627
+320628
+320629
+320630
+320631
+320632
+320633
+320634
+320635
+320636
+320637
+320638
+320639
+320640
+320641
+320642
+320643
+320644
+320645
+320646
+320647
+320648
+320649
+320650
+320651
+320652
+320653
+320654
+320655
+320656
+320657
+320658
+320659
+320660
+320661
+320662
+320663
+320664
+320665
+320666
+320667
+320668
+320669
+320670
+320671
+320672
+320673
+320674
+320675
+320676
+320677
+320678
+320679
+320680
+320681
+320682
+320683
+320684
+320685
+320686
+320687
+320688
+320689
+320690
+320691
+320692
+320693
+320694
+320695
+320696
+320697
+320698
+320699
+320700
+320701
+320702
+320703
+320704
+320705
+320706
+320707
+320708
+320709
+320710
+320711
+320712
+320713
+320714
+320715
+320716
+320717
+320718
+320719
+320720
+320721
+320722
+320723
+320724
+320725
+320726
+320727
+320728
+320729
+320730
+320731
+320732
+320733
+320734
+320735
+320736
+320737
+320738
+320739
+320740
+320741
+320742
+320743
+320744
+320745
+320746
+320747
+320748
+320749
+320750
+320751
+320752
+320753
+320754
+320755
+320756
+320757
+320758
+320759
+320760
+320761
+320762
+320763
+320764
+320765
+320766
+320767
+320768
+320769
+320770
+320771
+320772
+320773
+320774
+320775
+320776
+320777
+320778
+320779
+320780
+320781
+320782
+320783
+320784
+320785
+320786
+320787
+320788
+320789
+320790
+320791
+320792
+320793
+320794
+320795
+320796
+320797
+320798
+320799
+320800
+320801
+320802
+320803
+320804
+320805
+320806
+320807
+320808
+320809
+320810
+320811
+320812
+320813
+320814
+320815
+320816
+320817
+320818
+320819
+320820
+320821
+320822
+320823
+320824
+320825
+320826
+320827
+320828
+320829
+320830
+320831
+320832
+320833
+320834
+320835
+320836
+320837
+320838
+320839
+320840
+320841
+320842
+320843
+320844
+320845
+320846
+320847
+320848
+320849
+320850
+320851
+320852
+320853
+320854
+320855
+320856
+320857
+320858
+320859
+320860
+320861
+320862
+320863
+320864
+320865
+320866
+320867
+320868
+320869
+320870
+320871
+320872
+320873
+320874
+320875
+320876
+320877
+320878
+320879
+320880
+320881
+320882
+320883
+320884
+320885
+320886
+320887
+320888
+320889
+320890
+320891
+320892
+320893
+320894
+320895
+320896
+320897
+320898
+320899
+320900
+320901
+320902
+320903
+320904
+320905
+320906
+320907
+320908
+320909
+320910
+320911
+320912
+320913
+320914
+320915
+320916
+320917
+320918
+320919
+320920
+320921
+320922
+320923
+320924
+320925
+320926
+320927
+320928
+320929
+320930
+320931
+320932
+320933
+320934
+320935
+320936
+320937
+320938
+320939
+320940
+320941
+320942
+320943
+320944
+320945
+320946
+320947
+320948
+320949
+320950
+320951
+320952
+320953
+320954
+320955
+320956
+320957
+320958
+320959
+320960
+320961
+320962
+320963
+320964
+320965
+320966
+320967
+320968
+320969
+320970
+320971
+320972
+320973
+320974
+320975
+320976
+320977
+320978
+320979
+320980
+320981
+320982
+320983
+320984
+320985
+320986
+320987
+320988
+320989
+320990
+320991
+320992
+320993
+320994
+320995
+320996
+320997
+320998
+320999
+321000
+321001
+321002
+321003
+321004
+321005
+321006
+321007
+321008
+321009
+321010
+321011
+321012
+321013
+321014
+321015
+321016
+321017
+321018
+321019
+321020
+321021
+321022
+321023
+321024
+321025
+321026
+321027
+321028
+321029
+321030
+321031
+321032
+321033
+321034
+321035
+321036
+321037
+321038
+321039
+321040
+321041
+321042
+321043
+321044
+321045
+321046
+321047
+321048
+321049
+321050
+321051
+321052
+321053
+321054
+321055
+321056
+321057
+321058
+321059
+321060
+321061
+321062
+321063
+321064
+321065
+321066
+321067
+321068
+321069
+321070
+321071
+321072
+321073
+321074
+321075
+321076
+321077
+321078
+321079
+321080
+321081
+321082
+321083
+321084
+321085
+321086
+321087
+321088
+321089
+321090
+321091
+321092
+321093
+321094
+321095
+321096
+321097
+321098
+321099
+321100
+321101
+321102
+321103
+321104
+321105
+321106
+321107
+321108
+321109
+321110
+321111
+321112
+321113
+321114
+321115
+321116
+321117
+321118
+321119
+321120
+321121
+321122
+321123
+321124
+321125
+321126
+321127
+321128
+321129
+321130
+321131
+321132
+321133
+321134
+321135
+321136
+321137
+321138
+321139
+321140
+321141
+321142
+321143
+321144
+321145
+321146
+321147
+321148
+321149
+321150
+321151
+321152
+321153
+321154
+321155
+321156
+321157
+321158
+321159
+321160
+321161
+321162
+321163
+321164
+321165
+321166
+321167
+321168
+321169
+321170
+321171
+321172
+321173
+321174
+321175
+321176
+321177
+321178
+321179
+321180
+321181
+321182
+321183
+321184
+321185
+321186
+321187
+321188
+321189
+321190
+321191
+321192
+321193
+321194
+321195
+321196
+321197
+321198
+321199
+321200
+321201
+321202
+321203
+321204
+321205
+321206
+321207
+321208
+321209
+321210
+321211
+321212
+321213
+321214
+321215
+321216
+321217
+321218
+321219
+321220
+321221
+321222
+321223
+321224
+321225
+321226
+321227
+321228
+321229
+321230
+321231
+321232
+321233
+321234
+321235
+321236
+321237
+321238
+321239
+321240
+321241
+321242
+321243
+321244
+321245
+321246
+321247
+321248
+321249
+321250
+321251
+321252
+321253
+321254
+321255
+321256
+321257
+321258
+321259
+321260
+321261
+321262
+321263
+321264
+321265
+321266
+321267
+321268
+321269
+321270
+321271
+321272
+321273
+321274
+321275
+321276
+321277
+321278
+321279
+321280
+321281
+321282
+321283
+321284
+321285
+321286
+321287
+321288
+321289
+321290
+321291
+321292
+321293
+321294
+321295
+321296
+321297
+321298
+321299
+321300
+321301
+321302
+321303
+321304
+321305
+321306
+321307
+321308
+321309
+321310
+321311
+321312
+321313
+321314
+321315
+321316
+321317
+321318
+321319
+321320
+321321
+321322
+321323
+321324
+321325
+321326
+321327
+321328
+321329
+321330
+321331
+321332
+321333
+321334
+321335
+321336
+321337
+321338
+321339
+321340
+321341
+321342
+321343
+321344
+321345
+321346
+321347
+321348
+321349
+321350
+321351
+321352
+321353
+321354
+321355
+321356
+321357
+321358
+321359
+321360
+321361
+321362
+321363
+321364
+321365
+321366
+321367
+321368
+321369
+321370
+321371
+321372
+321373
+321374
+321375
+321376
+321377
+321378
+321379
+321380
+321381
+321382
+321383
+321384
+321385
+321386
+321387
+321388
+321389
+321390
+321391
+321392
+321393
+321394
+321395
+321396
+321397
+321398
+321399
+321400
+321401
+321402
+321403
+321404
+321405
+321406
+321407
+321408
+321409
+321410
+321411
+321412
+321413
+321414
+321415
+321416
+321417
+321418
+321419
+321420
+321421
+321422
+321423
+321424
+321425
+321426
+321427
+321428
+321429
+321430
+321431
+321432
+321433
+321434
+321435
+321436
+321437
+321438
+321439
+321440
+321441
+321442
+321443
+321444
+321445
+321446
+321447
+321448
+321449
+321450
+321451
+321452
+321453
+321454
+321455
+321456
+321457
+321458
+321459
+321460
+321461
+321462
+321463
+321464
+321465
+321466
+321467
+321468
+321469
+321470
+321471
+321472
+321473
+321474
+321475
+321476
+321477
+321478
+321479
+321480
+321481
+321482
+321483
+321484
+321485
+321486
+321487
+321488
+321489
+321490
+321491
+321492
+321493
+321494
+321495
+321496
+321497
+321498
+321499
+321500
+321501
+321502
+321503
+321504
+321505
+321506
+321507
+321508
+321509
+321510
+321511
+321512
+321513
+321514
+321515
+321516
+321517
+321518
+321519
+321520
+321521
+321522
+321523
+321524
+321525
+321526
+321527
+321528
+321529
+321530
+321531
+321532
+321533
+321534
+321535
+321536
+321537
+321538
+321539
+321540
+321541
+321542
+321543
+321544
+321545
+321546
+321547
+321548
+321549
+321550
+321551
+321552
+321553
+321554
+321555
+321556
+321557
+321558
+321559
+321560
+321561
+321562
+321563
+321564
+321565
+321566
+321567
+321568
+321569
+321570
+321571
+321572
+321573
+321574
+321575
+321576
+321577
+321578
+321579
+321580
+321581
+321582
+321583
+321584
+321585
+321586
+321587
+321588
+321589
+321590
+321591
+321592
+321593
+321594
+321595
+321596
+321597
+321598
+321599
+321600
+321601
+321602
+321603
+321604
+321605
+321606
+321607
+321608
+321609
+321610
+321611
+321612
+321613
+321614
+321615
+321616
+321617
+321618
+321619
+321620
+321621
+321622
+321623
+321624
+321625
+321626
+321627
+321628
+321629
+321630
+321631
+321632
+321633
+321634
+321635
+321636
+321637
+321638
+321639
+321640
+321641
+321642
+321643
+321644
+321645
+321646
+321647
+321648
+321649
+321650
+321651
+321652
+321653
+321654
+321655
+321656
+321657
+321658
+321659
+321660
+321661
+321662
+321663
+321664
+321665
+321666
+321667
+321668
+321669
+321670
+321671
+321672
+321673
+321674
+321675
+321676
+321677
+321678
+321679
+321680
+321681
+321682
+321683
+321684
+321685
+321686
+321687
+321688
+321689
+321690
+321691
+321692
+321693
+321694
+321695
+321696
+321697
+321698
+321699
+321700
+321701
+321702
+321703
+321704
+321705
+321706
+321707
+321708
+321709
+321710
+321711
+321712
+321713
+321714
+321715
+321716
+321717
+321718
+321719
+321720
+321721
+321722
+321723
+321724
+321725
+321726
+321727
+321728
+321729
+321730
+321731
+321732
+321733
+321734
+321735
+321736
+321737
+321738
+321739
+321740
+321741
+321742
+321743
+321744
+321745
+321746
+321747
+321748
+321749
+321750
+321751
+321752
+321753
+321754
+321755
+321756
+321757
+321758
+321759
+321760
+321761
+321762
+321763
+321764
+321765
+321766
+321767
+321768
+321769
+321770
+321771
+321772
+321773
+321774
+321775
+321776
+321777
+321778
+321779
+321780
+321781
+321782
+321783
+321784
+321785
+321786
+321787
+321788
+321789
+321790
+321791
+321792
+321793
+321794
+321795
+321796
+321797
+321798
+321799
+321800
+321801
+321802
+321803
+321804
+321805
+321806
+321807
+321808
+321809
+321810
+321811
+321812
+321813
+321814
+321815
+321816
+321817
+321818
+321819
+321820
+321821
+321822
+321823
+321824
+321825
+321826
+321827
+321828
+321829
+321830
+321831
+321832
+321833
+321834
+321835
+321836
+321837
+321838
+321839
+321840
+321841
+321842
+321843
+321844
+321845
+321846
+321847
+321848
+321849
+321850
+321851
+321852
+321853
+321854
+321855
+321856
+321857
+321858
+321859
+321860
+321861
+321862
+321863
+321864
+321865
+321866
+321867
+321868
+321869
+321870
+321871
+321872
+321873
+321874
+321875
+321876
+321877
+321878
+321879
+321880
+321881
+321882
+321883
+321884
+321885
+321886
+321887
+321888
+321889
+321890
+321891
+321892
+321893
+321894
+321895
+321896
+321897
+321898
+321899
+321900
+321901
+321902
+321903
+321904
+321905
+321906
+321907
+321908
+321909
+321910
+321911
+321912
+321913
+321914
+321915
+321916
+321917
+321918
+321919
+321920
+321921
+321922
+321923
+321924
+321925
+321926
+321927
+321928
+321929
+321930
+321931
+321932
+321933
+321934
+321935
+321936
+321937
+321938
+321939
+321940
+321941
+321942
+321943
+321944
+321945
+321946
+321947
+321948
+321949
+321950
+321951
+321952
+321953
+321954
+321955
+321956
+321957
+321958
+321959
+321960
+321961
+321962
+321963
+321964
+321965
+321966
+321967
+321968
+321969
+321970
+321971
+321972
+321973
+321974
+321975
+321976
+321977
+321978
+321979
+321980
+321981
+321982
+321983
+321984
+321985
+321986
+321987
+321988
+321989
+321990
+321991
+321992
+321993
+321994
+321995
+321996
+321997
+321998
+321999
+322000
+322001
+322002
+322003
+322004
+322005
+322006
+322007
+322008
+322009
+322010
+322011
+322012
+322013
+322014
+322015
+322016
+322017
+322018
+322019
+322020
+322021
+322022
+322023
+322024
+322025
+322026
+322027
+322028
+322029
+322030
+322031
+322032
+322033
+322034
+322035
+322036
+322037
+322038
+322039
+322040
+322041
+322042
+322043
+322044
+322045
+322046
+322047
+322048
+322049
+322050
+322051
+322052
+322053
+322054
+322055
+322056
+322057
+322058
+322059
+322060
+322061
+322062
+322063
+322064
+322065
+322066
+322067
+322068
+322069
+322070
+322071
+322072
+322073
+322074
+322075
+322076
+322077
+322078
+322079
+322080
+322081
+322082
+322083
+322084
+322085
+322086
+322087
+322088
+322089
+322090
+322091
+322092
+322093
+322094
+322095
+322096
+322097
+322098
+322099
+322100
+322101
+322102
+322103
+322104
+322105
+322106
+322107
+322108
+322109
+322110
+322111
+322112
+322113
+322114
+322115
+322116
+322117
+322118
+322119
+322120
+322121
+322122
+322123
+322124
+322125
+322126
+322127
+322128
+322129
+322130
+322131
+322132
+322133
+322134
+322135
+322136
+322137
+322138
+322139
+322140
+322141
+322142
+322143
+322144
+322145
+322146
+322147
+322148
+322149
+322150
+322151
+322152
+322153
+322154
+322155
+322156
+322157
+322158
+322159
+322160
+322161
+322162
+322163
+322164
+322165
+322166
+322167
+322168
+322169
+322170
+322171
+322172
+322173
+322174
+322175
+322176
+322177
+322178
+322179
+322180
+322181
+322182
+322183
+322184
+322185
+322186
+322187
+322188
+322189
+322190
+322191
+322192
+322193
+322194
+322195
+322196
+322197
+322198
+322199
+322200
+322201
+322202
+322203
+322204
+322205
+322206
+322207
+322208
+322209
+322210
+322211
+322212
+322213
+322214
+322215
+322216
+322217
+322218
+322219
+322220
+322221
+322222
+322223
+322224
+322225
+322226
+322227
+322228
+322229
+322230
+322231
+322232
+322233
+322234
+322235
+322236
+322237
+322238
+322239
+322240
+322241
+322242
+322243
+322244
+322245
+322246
+322247
+322248
+322249
+322250
+322251
+322252
+322253
+322254
+322255
+322256
+322257
+322258
+322259
+322260
+322261
+322262
+322263
+322264
+322265
+322266
+322267
+322268
+322269
+322270
+322271
+322272
+322273
+322274
+322275
+322276
+322277
+322278
+322279
+322280
+322281
+322282
+322283
+322284
+322285
+322286
+322287
+322288
+322289
+322290
+322291
+322292
+322293
+322294
+322295
+322296
+322297
+322298
+322299
+322300
+322301
+322302
+322303
+322304
+322305
+322306
+322307
+322308
+322309
+322310
+322311
+322312
+322313
+322314
+322315
+322316
+322317
+322318
+322319
+322320
+322321
+322322
+322323
+322324
+322325
+322326
+322327
+322328
+322329
+322330
+322331
+322332
+322333
+322334
+322335
+322336
+322337
+322338
+322339
+322340
+322341
+322342
+322343
+322344
+322345
+322346
+322347
+322348
+322349
+322350
+322351
+322352
+322353
+322354
+322355
+322356
+322357
+322358
+322359
+322360
+322361
+322362
+322363
+322364
+322365
+322366
+322367
+322368
+322369
+322370
+322371
+322372
+322373
+322374
+322375
+322376
+322377
+322378
+322379
+322380
+322381
+322382
+322383
+322384
+322385
+322386
+322387
+322388
+322389
+322390
+322391
+322392
+322393
+322394
+322395
+322396
+322397
+322398
+322399
+322400
+322401
+322402
+322403
+322404
+322405
+322406
+322407
+322408
+322409
+322410
+322411
+322412
+322413
+322414
+322415
+322416
+322417
+322418
+322419
+322420
+322421
+322422
+322423
+322424
+322425
+322426
+322427
+322428
+322429
+322430
+322431
+322432
+322433
+322434
+322435
+322436
+322437
+322438
+322439
+322440
+322441
+322442
+322443
+322444
+322445
+322446
+322447
+322448
+322449
+322450
+322451
+322452
+322453
+322454
+322455
+322456
+322457
+322458
+322459
+322460
+322461
+322462
+322463
+322464
+322465
+322466
+322467
+322468
+322469
+322470
+322471
+322472
+322473
+322474
+322475
+322476
+322477
+322478
+322479
+322480
+322481
+322482
+322483
+322484
+322485
+322486
+322487
+322488
+322489
+322490
+322491
+322492
+322493
+322494
+322495
+322496
+322497
+322498
+322499
+322500
+322501
+322502
+322503
+322504
+322505
+322506
+322507
+322508
+322509
+322510
+322511
+322512
+322513
+322514
+322515
+322516
+322517
+322518
+322519
+322520
+322521
+322522
+322523
+322524
+322525
+322526
+322527
+322528
+322529
+322530
+322531
+322532
+322533
+322534
+322535
+322536
+322537
+322538
+322539
+322540
+322541
+322542
+322543
+322544
+322545
+322546
+322547
+322548
+322549
+322550
+322551
+322552
+322553
+322554
+322555
+322556
+322557
+322558
+322559
+322560
+322561
+322562
+322563
+322564
+322565
+322566
+322567
+322568
+322569
+322570
+322571
+322572
+322573
+322574
+322575
+322576
+322577
+322578
+322579
+322580
+322581
+322582
+322583
+322584
+322585
+322586
+322587
+322588
+322589
+322590
+322591
+322592
+322593
+322594
+322595
+322596
+322597
+322598
+322599
+322600
+322601
+322602
+322603
+322604
+322605
+322606
+322607
+322608
+322609
+322610
+322611
+322612
+322613
+322614
+322615
+322616
+322617
+322618
+322619
+322620
+322621
+322622
+322623
+322624
+322625
+322626
+322627
+322628
+322629
+322630
+322631
+322632
+322633
+322634
+322635
+322636
+322637
+322638
+322639
+322640
+322641
+322642
+322643
+322644
+322645
+322646
+322647
+322648
+322649
+322650
+322651
+322652
+322653
+322654
+322655
+322656
+322657
+322658
+322659
+322660
+322661
+322662
+322663
+322664
+322665
+322666
+322667
+322668
+322669
+322670
+322671
+322672
+322673
+322674
+322675
+322676
+322677
+322678
+322679
+322680
+322681
+322682
+322683
+322684
+322685
+322686
+322687
+322688
+322689
+322690
+322691
+322692
+322693
+322694
+322695
+322696
+322697
+322698
+322699
+322700
+322701
+322702
+322703
+322704
+322705
+322706
+322707
+322708
+322709
+322710
+322711
+322712
+322713
+322714
+322715
+322716
+322717
+322718
+322719
+322720
+322721
+322722
+322723
+322724
+322725
+322726
+322727
+322728
+322729
+322730
+322731
+322732
+322733
+322734
+322735
+322736
+322737
+322738
+322739
+322740
+322741
+322742
+322743
+322744
+322745
+322746
+322747
+322748
+322749
+322750
+322751
+322752
+322753
+322754
+322755
+322756
+322757
+322758
+322759
+322760
+322761
+322762
+322763
+322764
+322765
+322766
+322767
+322768
+322769
+322770
+322771
+322772
+322773
+322774
+322775
+322776
+322777
+322778
+322779
+322780
+322781
+322782
+322783
+322784
+322785
+322786
+322787
+322788
+322789
+322790
+322791
+322792
+322793
+322794
+322795
+322796
+322797
+322798
+322799
+322800
+322801
+322802
+322803
+322804
+322805
+322806
+322807
+322808
+322809
+322810
+322811
+322812
+322813
+322814
+322815
+322816
+322817
+322818
+322819
+322820
+322821
+322822
+322823
+322824
+322825
+322826
+322827
+322828
+322829
+322830
+322831
+322832
+322833
+322834
+322835
+322836
+322837
+322838
+322839
+322840
+322841
+322842
+322843
+322844
+322845
+322846
+322847
+322848
+322849
+322850
+322851
+322852
+322853
+322854
+322855
+322856
+322857
+322858
+322859
+322860
+322861
+322862
+322863
+322864
+322865
+322866
+322867
+322868
+322869
+322870
+322871
+322872
+322873
+322874
+322875
+322876
+322877
+322878
+322879
+322880
+322881
+322882
+322883
+322884
+322885
+322886
+322887
+322888
+322889
+322890
+322891
+322892
+322893
+322894
+322895
+322896
+322897
+322898
+322899
+322900
+322901
+322902
+322903
+322904
+322905
+322906
+322907
+322908
+322909
+322910
+322911
+322912
+322913
+322914
+322915
+322916
+322917
+322918
+322919
+322920
+322921
+322922
+322923
+322924
+322925
+322926
+322927
+322928
+322929
+322930
+322931
+322932
+322933
+322934
+322935
+322936
+322937
+322938
+322939
+322940
+322941
+322942
+322943
+322944
+322945
+322946
+322947
+322948
+322949
+322950
+322951
+322952
+322953
+322954
+322955
+322956
+322957
+322958
+322959
+322960
+322961
+322962
+322963
+322964
+322965
+322966
+322967
+322968
+322969
+322970
+322971
+322972
+322973
+322974
+322975
+322976
+322977
+322978
+322979
+322980
+322981
+322982
+322983
+322984
+322985
+322986
+322987
+322988
+322989
+322990
+322991
+322992
+322993
+322994
+322995
+322996
+322997
+322998
+322999
+323000
+323001
+323002
+323003
+323004
+323005
+323006
+323007
+323008
+323009
+323010
+323011
+323012
+323013
+323014
+323015
+323016
+323017
+323018
+323019
+323020
+323021
+323022
+323023
+323024
+323025
+323026
+323027
+323028
+323029
+323030
+323031
+323032
+323033
+323034
+323035
+323036
+323037
+323038
+323039
+323040
+323041
+323042
+323043
+323044
+323045
+323046
+323047
+323048
+323049
+323050
+323051
+323052
+323053
+323054
+323055
+323056
+323057
+323058
+323059
+323060
+323061
+323062
+323063
+323064
+323065
+323066
+323067
+323068
+323069
+323070
+323071
+323072
+323073
+323074
+323075
+323076
+323077
+323078
+323079
+323080
+323081
+323082
+323083
+323084
+323085
+323086
+323087
+323088
+323089
+323090
+323091
+323092
+323093
+323094
+323095
+323096
+323097
+323098
+323099
+323100
+323101
+323102
+323103
+323104
+323105
+323106
+323107
+323108
+323109
+323110
+323111
+323112
+323113
+323114
+323115
+323116
+323117
+323118
+323119
+323120
+323121
+323122
+323123
+323124
+323125
+323126
+323127
+323128
+323129
+323130
+323131
+323132
+323133
+323134
+323135
+323136
+323137
+323138
+323139
+323140
+323141
+323142
+323143
+323144
+323145
+323146
+323147
+323148
+323149
+323150
+323151
+323152
+323153
+323154
+323155
+323156
+323157
+323158
+323159
+323160
+323161
+323162
+323163
+323164
+323165
+323166
+323167
+323168
+323169
+323170
+323171
+323172
+323173
+323174
+323175
+323176
+323177
+323178
+323179
+323180
+323181
+323182
+323183
+323184
+323185
+323186
+323187
+323188
+323189
+323190
+323191
+323192
+323193
+323194
+323195
+323196
+323197
+323198
+323199
+323200
+323201
+323202
+323203
+323204
+323205
+323206
+323207
+323208
+323209
+323210
+323211
+323212
+323213
+323214
+323215
+323216
+323217
+323218
+323219
+323220
+323221
+323222
+323223
+323224
+323225
+323226
+323227
+323228
+323229
+323230
+323231
+323232
+323233
+323234
+323235
+323236
+323237
+323238
+323239
+323240
+323241
+323242
+323243
+323244
+323245
+323246
+323247
+323248
+323249
+323250
+323251
+323252
+323253
+323254
+323255
+323256
+323257
+323258
+323259
+323260
+323261
+323262
+323263
+323264
+323265
+323266
+323267
+323268
+323269
+323270
+323271
+323272
+323273
+323274
+323275
+323276
+323277
+323278
+323279
+323280
+323281
+323282
+323283
+323284
+323285
+323286
+323287
+323288
+323289
+323290
+323291
+323292
+323293
+323294
+323295
+323296
+323297
+323298
+323299
+323300
+323301
+323302
+323303
+323304
+323305
+323306
+323307
+323308
+323309
+323310
+323311
+323312
+323313
+323314
+323315
+323316
+323317
+323318
+323319
+323320
+323321
+323322
+323323
+323324
+323325
+323326
+323327
+323328
+323329
+323330
+323331
+323332
+323333
+323334
+323335
+323336
+323337
+323338
+323339
+323340
+323341
+323342
+323343
+323344
+323345
+323346
+323347
+323348
+323349
+323350
+323351
+323352
+323353
+323354
+323355
+323356
+323357
+323358
+323359
+323360
+323361
+323362
+323363
+323364
+323365
+323366
+323367
+323368
+323369
+323370
+323371
+323372
+323373
+323374
+323375
+323376
+323377
+323378
+323379
+323380
+323381
+323382
+323383
+323384
+323385
+323386
+323387
+323388
+323389
+323390
+323391
+323392
+323393
+323394
+323395
+323396
+323397
+323398
+323399
+323400
+323401
+323402
+323403
+323404
+323405
+323406
+323407
+323408
+323409
+323410
+323411
+323412
+323413
+323414
+323415
+323416
+323417
+323418
+323419
+323420
+323421
+323422
+323423
+323424
+323425
+323426
+323427
+323428
+323429
+323430
+323431
+323432
+323433
+323434
+323435
+323436
+323437
+323438
+323439
+323440
+323441
+323442
+323443
+323444
+323445
+323446
+323447
+323448
+323449
+323450
+323451
+323452
+323453
+323454
+323455
+323456
+323457
+323458
+323459
+323460
+323461
+323462
+323463
+323464
+323465
+323466
+323467
+323468
+323469
+323470
+323471
+323472
+323473
+323474
+323475
+323476
+323477
+323478
+323479
+323480
+323481
+323482
+323483
+323484
+323485
+323486
+323487
+323488
+323489
+323490
+323491
+323492
+323493
+323494
+323495
+323496
+323497
+323498
+323499
+323500
+323501
+323502
+323503
+323504
+323505
+323506
+323507
+323508
+323509
+323510
+323511
+323512
+323513
+323514
+323515
+323516
+323517
+323518
+323519
+323520
+323521
+323522
+323523
+323524
+323525
+323526
+323527
+323528
+323529
+323530
+323531
+323532
+323533
+323534
+323535
+323536
+323537
+323538
+323539
+323540
+323541
+323542
+323543
+323544
+323545
+323546
+323547
+323548
+323549
+323550
+323551
+323552
+323553
+323554
+323555
+323556
+323557
+323558
+323559
+323560
+323561
+323562
+323563
+323564
+323565
+323566
+323567
+323568
+323569
+323570
+323571
+323572
+323573
+323574
+323575
+323576
+323577
+323578
+323579
+323580
+323581
+323582
+323583
+323584
+323585
+323586
+323587
+323588
+323589
+323590
+323591
+323592
+323593
+323594
+323595
+323596
+323597
+323598
+323599
+323600
+323601
+323602
+323603
+323604
+323605
+323606
+323607
+323608
+323609
+323610
+323611
+323612
+323613
+323614
+323615
+323616
+323617
+323618
+323619
+323620
+323621
+323622
+323623
+323624
+323625
+323626
+323627
+323628
+323629
+323630
+323631
+323632
+323633
+323634
+323635
+323636
+323637
+323638
+323639
+323640
+323641
+323642
+323643
+323644
+323645
+323646
+323647
+323648
+323649
+323650
+323651
+323652
+323653
+323654
+323655
+323656
+323657
+323658
+323659
+323660
+323661
+323662
+323663
+323664
+323665
+323666
+323667
+323668
+323669
+323670
+323671
+323672
+323673
+323674
+323675
+323676
+323677
+323678
+323679
+323680
+323681
+323682
+323683
+323684
+323685
+323686
+323687
+323688
+323689
+323690
+323691
+323692
+323693
+323694
+323695
+323696
+323697
+323698
+323699
+323700
+323701
+323702
+323703
+323704
+323705
+323706
+323707
+323708
+323709
+323710
+323711
+323712
+323713
+323714
+323715
+323716
+323717
+323718
+323719
+323720
+323721
+323722
+323723
+323724
+323725
+323726
+323727
+323728
+323729
+323730
+323731
+323732
+323733
+323734
+323735
+323736
+323737
+323738
+323739
+323740
+323741
+323742
+323743
+323744
+323745
+323746
+323747
+323748
+323749
+323750
+323751
+323752
+323753
+323754
+323755
+323756
+323757
+323758
+323759
+323760
+323761
+323762
+323763
+323764
+323765
+323766
+323767
+323768
+323769
+323770
+323771
+323772
+323773
+323774
+323775
+323776
+323777
+323778
+323779
+323780
+323781
+323782
+323783
+323784
+323785
+323786
+323787
+323788
+323789
+323790
+323791
+323792
+323793
+323794
+323795
+323796
+323797
+323798
+323799
+323800
+323801
+323802
+323803
+323804
+323805
+323806
+323807
+323808
+323809
+323810
+323811
+323812
+323813
+323814
+323815
+323816
+323817
+323818
+323819
+323820
+323821
+323822
+323823
+323824
+323825
+323826
+323827
+323828
+323829
+323830
+323831
+323832
+323833
+323834
+323835
+323836
+323837
+323838
+323839
+323840
+323841
+323842
+323843
+323844
+323845
+323846
+323847
+323848
+323849
+323850
+323851
+323852
+323853
+323854
+323855
+323856
+323857
+323858
+323859
+323860
+323861
+323862
+323863
+323864
+323865
+323866
+323867
+323868
+323869
+323870
+323871
+323872
+323873
+323874
+323875
+323876
+323877
+323878
+323879
+323880
+323881
+323882
+323883
+323884
+323885
+323886
+323887
+323888
+323889
+323890
+323891
+323892
+323893
+323894
+323895
+323896
+323897
+323898
+323899
+323900
+323901
+323902
+323903
+323904
+323905
+323906
+323907
+323908
+323909
+323910
+323911
+323912
+323913
+323914
+323915
+323916
+323917
+323918
+323919
+323920
+323921
+323922
+323923
+323924
+323925
+323926
+323927
+323928
+323929
+323930
+323931
+323932
+323933
+323934
+323935
+323936
+323937
+323938
+323939
+323940
+323941
+323942
+323943
+323944
+323945
+323946
+323947
+323948
+323949
+323950
+323951
+323952
+323953
+323954
+323955
+323956
+323957
+323958
+323959
+323960
+323961
+323962
+323963
+323964
+323965
+323966
+323967
+323968
+323969
+323970
+323971
+323972
+323973
+323974
+323975
+323976
+323977
+323978
+323979
+323980
+323981
+323982
+323983
+323984
+323985
+323986
+323987
+323988
+323989
+323990
+323991
+323992
+323993
+323994
+323995
+323996
+323997
+323998
+323999
+324000
+324001
+324002
+324003
+324004
+324005
+324006
+324007
+324008
+324009
+324010
+324011
+324012
+324013
+324014
+324015
+324016
+324017
+324018
+324019
+324020
+324021
+324022
+324023
+324024
+324025
+324026
+324027
+324028
+324029
+324030
+324031
+324032
+324033
+324034
+324035
+324036
+324037
+324038
+324039
+324040
+324041
+324042
+324043
+324044
+324045
+324046
+324047
+324048
+324049
+324050
+324051
+324052
+324053
+324054
+324055
+324056
+324057
+324058
+324059
+324060
+324061
+324062
+324063
+324064
+324065
+324066
+324067
+324068
+324069
+324070
+324071
+324072
+324073
+324074
+324075
+324076
+324077
+324078
+324079
+324080
+324081
+324082
+324083
+324084
+324085
+324086
+324087
+324088
+324089
+324090
+324091
+324092
+324093
+324094
+324095
+324096
+324097
+324098
+324099
+324100
+324101
+324102
+324103
+324104
+324105
+324106
+324107
+324108
+324109
+324110
+324111
+324112
+324113
+324114
+324115
+324116
+324117
+324118
+324119
+324120
+324121
+324122
+324123
+324124
+324125
+324126
+324127
+324128
+324129
+324130
+324131
+324132
+324133
+324134
+324135
+324136
+324137
+324138
+324139
+324140
+324141
+324142
+324143
+324144
+324145
+324146
+324147
+324148
+324149
+324150
+324151
+324152
+324153
+324154
+324155
+324156
+324157
+324158
+324159
+324160
+324161
+324162
+324163
+324164
+324165
+324166
+324167
+324168
+324169
+324170
+324171
+324172
+324173
+324174
+324175
+324176
+324177
+324178
+324179
+324180
+324181
+324182
+324183
+324184
+324185
+324186
+324187
+324188
+324189
+324190
+324191
+324192
+324193
+324194
+324195
+324196
+324197
+324198
+324199
+324200
+324201
+324202
+324203
+324204
+324205
+324206
+324207
+324208
+324209
+324210
+324211
+324212
+324213
+324214
+324215
+324216
+324217
+324218
+324219
+324220
+324221
+324222
+324223
+324224
+324225
+324226
+324227
+324228
+324229
+324230
+324231
+324232
+324233
+324234
+324235
+324236
+324237
+324238
+324239
+324240
+324241
+324242
+324243
+324244
+324245
+324246
+324247
+324248
+324249
+324250
+324251
+324252
+324253
+324254
+324255
+324256
+324257
+324258
+324259
+324260
+324261
+324262
+324263
+324264
+324265
+324266
+324267
+324268
+324269
+324270
+324271
+324272
+324273
+324274
+324275
+324276
+324277
+324278
+324279
+324280
+324281
+324282
+324283
+324284
+324285
+324286
+324287
+324288
+324289
+324290
+324291
+324292
+324293
+324294
+324295
+324296
+324297
+324298
+324299
+324300
+324301
+324302
+324303
+324304
+324305
+324306
+324307
+324308
+324309
+324310
+324311
+324312
+324313
+324314
+324315
+324316
+324317
+324318
+324319
+324320
+324321
+324322
+324323
+324324
+324325
+324326
+324327
+324328
+324329
+324330
+324331
+324332
+324333
+324334
+324335
+324336
+324337
+324338
+324339
+324340
+324341
+324342
+324343
+324344
+324345
+324346
+324347
+324348
+324349
+324350
+324351
+324352
+324353
+324354
+324355
+324356
+324357
+324358
+324359
+324360
+324361
+324362
+324363
+324364
+324365
+324366
+324367
+324368
+324369
+324370
+324371
+324372
+324373
+324374
+324375
+324376
+324377
+324378
+324379
+324380
+324381
+324382
+324383
+324384
+324385
+324386
+324387
+324388
+324389
+324390
+324391
+324392
+324393
+324394
+324395
+324396
+324397
+324398
+324399
+324400
+324401
+324402
+324403
+324404
+324405
+324406
+324407
+324408
+324409
+324410
+324411
+324412
+324413
+324414
+324415
+324416
+324417
+324418
+324419
+324420
+324421
+324422
+324423
+324424
+324425
+324426
+324427
+324428
+324429
+324430
+324431
+324432
+324433
+324434
+324435
+324436
+324437
+324438
+324439
+324440
+324441
+324442
+324443
+324444
+324445
+324446
+324447
+324448
+324449
+324450
+324451
+324452
+324453
+324454
+324455
+324456
+324457
+324458
+324459
+324460
+324461
+324462
+324463
+324464
+324465
+324466
+324467
+324468
+324469
+324470
+324471
+324472
+324473
+324474
+324475
+324476
+324477
+324478
+324479
+324480
+324481
+324482
+324483
+324484
+324485
+324486
+324487
+324488
+324489
+324490
+324491
+324492
+324493
+324494
+324495
+324496
+324497
+324498
+324499
+324500
+324501
+324502
+324503
+324504
+324505
+324506
+324507
+324508
+324509
+324510
+324511
+324512
+324513
+324514
+324515
+324516
+324517
+324518
+324519
+324520
+324521
+324522
+324523
+324524
+324525
+324526
+324527
+324528
+324529
+324530
+324531
+324532
+324533
+324534
+324535
+324536
+324537
+324538
+324539
+324540
+324541
+324542
+324543
+324544
+324545
+324546
+324547
+324548
+324549
+324550
+324551
+324552
+324553
+324554
+324555
+324556
+324557
+324558
+324559
+324560
+324561
+324562
+324563
+324564
+324565
+324566
+324567
+324568
+324569
+324570
+324571
+324572
+324573
+324574
+324575
+324576
+324577
+324578
+324579
+324580
+324581
+324582
+324583
+324584
+324585
+324586
+324587
+324588
+324589
+324590
+324591
+324592
+324593
+324594
+324595
+324596
+324597
+324598
+324599
+324600
+324601
+324602
+324603
+324604
+324605
+324606
+324607
+324608
+324609
+324610
+324611
+324612
+324613
+324614
+324615
+324616
+324617
+324618
+324619
+324620
+324621
+324622
+324623
+324624
+324625
+324626
+324627
+324628
+324629
+324630
+324631
+324632
+324633
+324634
+324635
+324636
+324637
+324638
+324639
+324640
+324641
+324642
+324643
+324644
+324645
+324646
+324647
+324648
+324649
+324650
+324651
+324652
+324653
+324654
+324655
+324656
+324657
+324658
+324659
+324660
+324661
+324662
+324663
+324664
+324665
+324666
+324667
+324668
+324669
+324670
+324671
+324672
+324673
+324674
+324675
+324676
+324677
+324678
+324679
+324680
+324681
+324682
+324683
+324684
+324685
+324686
+324687
+324688
+324689
+324690
+324691
+324692
+324693
+324694
+324695
+324696
+324697
+324698
+324699
+324700
+324701
+324702
+324703
+324704
+324705
+324706
+324707
+324708
+324709
+324710
+324711
+324712
+324713
+324714
+324715
+324716
+324717
+324718
+324719
+324720
+324721
+324722
+324723
+324724
+324725
+324726
+324727
+324728
+324729
+324730
+324731
+324732
+324733
+324734
+324735
+324736
+324737
+324738
+324739
+324740
+324741
+324742
+324743
+324744
+324745
+324746
+324747
+324748
+324749
+324750
+324751
+324752
+324753
+324754
+324755
+324756
+324757
+324758
+324759
+324760
+324761
+324762
+324763
+324764
+324765
+324766
+324767
+324768
+324769
+324770
+324771
+324772
+324773
+324774
+324775
+324776
+324777
+324778
+324779
+324780
+324781
+324782
+324783
+324784
+324785
+324786
+324787
+324788
+324789
+324790
+324791
+324792
+324793
+324794
+324795
+324796
+324797
+324798
+324799
+324800
+324801
+324802
+324803
+324804
+324805
+324806
+324807
+324808
+324809
+324810
+324811
+324812
+324813
+324814
+324815
+324816
+324817
+324818
+324819
+324820
+324821
+324822
+324823
+324824
+324825
+324826
+324827
+324828
+324829
+324830
+324831
+324832
+324833
+324834
+324835
+324836
+324837
+324838
+324839
+324840
+324841
+324842
+324843
+324844
+324845
+324846
+324847
+324848
+324849
+324850
+324851
+324852
+324853
+324854
+324855
+324856
+324857
+324858
+324859
+324860
+324861
+324862
+324863
+324864
+324865
+324866
+324867
+324868
+324869
+324870
+324871
+324872
+324873
+324874
+324875
+324876
+324877
+324878
+324879
+324880
+324881
+324882
+324883
+324884
+324885
+324886
+324887
+324888
+324889
+324890
+324891
+324892
+324893
+324894
+324895
+324896
+324897
+324898
+324899
+324900
+324901
+324902
+324903
+324904
+324905
+324906
+324907
+324908
+324909
+324910
+324911
+324912
+324913
+324914
+324915
+324916
+324917
+324918
+324919
+324920
+324921
+324922
+324923
+324924
+324925
+324926
+324927
+324928
+324929
+324930
+324931
+324932
+324933
+324934
+324935
+324936
+324937
+324938
+324939
+324940
+324941
+324942
+324943
+324944
+324945
+324946
+324947
+324948
+324949
+324950
+324951
+324952
+324953
+324954
+324955
+324956
+324957
+324958
+324959
+324960
+324961
+324962
+324963
+324964
+324965
+324966
+324967
+324968
+324969
+324970
+324971
+324972
+324973
+324974
+324975
+324976
+324977
+324978
+324979
+324980
+324981
+324982
+324983
+324984
+324985
+324986
+324987
+324988
+324989
+324990
+324991
+324992
+324993
+324994
+324995
+324996
+324997
+324998
+324999
+325000
+325001
+325002
+325003
+325004
+325005
+325006
+325007
+325008
+325009
+325010
+325011
+325012
+325013
+325014
+325015
+325016
+325017
+325018
+325019
+325020
+325021
+325022
+325023
+325024
+325025
+325026
+325027
+325028
+325029
+325030
+325031
+325032
+325033
+325034
+325035
+325036
+325037
+325038
+325039
+325040
+325041
+325042
+325043
+325044
+325045
+325046
+325047
+325048
+325049
+325050
+325051
+325052
+325053
+325054
+325055
+325056
+325057
+325058
+325059
+325060
+325061
+325062
+325063
+325064
+325065
+325066
+325067
+325068
+325069
+325070
+325071
+325072
+325073
+325074
+325075
+325076
+325077
+325078
+325079
+325080
+325081
+325082
+325083
+325084
+325085
+325086
+325087
+325088
+325089
+325090
+325091
+325092
+325093
+325094
+325095
+325096
+325097
+325098
+325099
+325100
+325101
+325102
+325103
+325104
+325105
+325106
+325107
+325108
+325109
+325110
+325111
+325112
+325113
+325114
+325115
+325116
+325117
+325118
+325119
+325120
+325121
+325122
+325123
+325124
+325125
+325126
+325127
+325128
+325129
+325130
+325131
+325132
+325133
+325134
+325135
+325136
+325137
+325138
+325139
+325140
+325141
+325142
+325143
+325144
+325145
+325146
+325147
+325148
+325149
+325150
+325151
+325152
+325153
+325154
+325155
+325156
+325157
+325158
+325159
+325160
+325161
+325162
+325163
+325164
+325165
+325166
+325167
+325168
+325169
+325170
+325171
+325172
+325173
+325174
+325175
+325176
+325177
+325178
+325179
+325180
+325181
+325182
+325183
+325184
+325185
+325186
+325187
+325188
+325189
+325190
+325191
+325192
+325193
+325194
+325195
+325196
+325197
+325198
+325199
+325200
+325201
+325202
+325203
+325204
+325205
+325206
+325207
+325208
+325209
+325210
+325211
+325212
+325213
+325214
+325215
+325216
+325217
+325218
+325219
+325220
+325221
+325222
+325223
+325224
+325225
+325226
+325227
+325228
+325229
+325230
+325231
+325232
+325233
+325234
+325235
+325236
+325237
+325238
+325239
+325240
+325241
+325242
+325243
+325244
+325245
+325246
+325247
+325248
+325249
+325250
+325251
+325252
+325253
+325254
+325255
+325256
+325257
+325258
+325259
+325260
+325261
+325262
+325263
+325264
+325265
+325266
+325267
+325268
+325269
+325270
+325271
+325272
+325273
+325274
+325275
+325276
+325277
+325278
+325279
+325280
+325281
+325282
+325283
+325284
+325285
+325286
+325287
+325288
+325289
+325290
+325291
+325292
+325293
+325294
+325295
+325296
+325297
+325298
+325299
+325300
+325301
+325302
+325303
+325304
+325305
+325306
+325307
+325308
+325309
+325310
+325311
+325312
+325313
+325314
+325315
+325316
+325317
+325318
+325319
+325320
+325321
+325322
+325323
+325324
+325325
+325326
+325327
+325328
+325329
+325330
+325331
+325332
+325333
+325334
+325335
+325336
+325337
+325338
+325339
+325340
+325341
+325342
+325343
+325344
+325345
+325346
+325347
+325348
+325349
+325350
+325351
+325352
+325353
+325354
+325355
+325356
+325357
+325358
+325359
+325360
+325361
+325362
+325363
+325364
+325365
+325366
+325367
+325368
+325369
+325370
+325371
+325372
+325373
+325374
+325375
+325376
+325377
+325378
+325379
+325380
+325381
+325382
+325383
+325384
+325385
+325386
+325387
+325388
+325389
+325390
+325391
+325392
+325393
+325394
+325395
+325396
+325397
+325398
+325399
+325400
+325401
+325402
+325403
+325404
+325405
+325406
+325407
+325408
+325409
+325410
+325411
+325412
+325413
+325414
+325415
+325416
+325417
+325418
+325419
+325420
+325421
+325422
+325423
+325424
+325425
+325426
+325427
+325428
+325429
+325430
+325431
+325432
+325433
+325434
+325435
+325436
+325437
+325438
+325439
+325440
+325441
+325442
+325443
+325444
+325445
+325446
+325447
+325448
+325449
+325450
+325451
+325452
+325453
+325454
+325455
+325456
+325457
+325458
+325459
+325460
+325461
+325462
+325463
+325464
+325465
+325466
+325467
+325468
+325469
+325470
+325471
+325472
+325473
+325474
+325475
+325476
+325477
+325478
+325479
+325480
+325481
+325482
+325483
+325484
+325485
+325486
+325487
+325488
+325489
+325490
+325491
+325492
+325493
+325494
+325495
+325496
+325497
+325498
+325499
+325500
+325501
+325502
+325503
+325504
+325505
+325506
+325507
+325508
+325509
+325510
+325511
+325512
+325513
+325514
+325515
+325516
+325517
+325518
+325519
+325520
+325521
+325522
+325523
+325524
+325525
+325526
+325527
+325528
+325529
+325530
+325531
+325532
+325533
+325534
+325535
+325536
+325537
+325538
+325539
+325540
+325541
+325542
+325543
+325544
+325545
+325546
+325547
+325548
+325549
+325550
+325551
+325552
+325553
+325554
+325555
+325556
+325557
+325558
+325559
+325560
+325561
+325562
+325563
+325564
+325565
+325566
+325567
+325568
+325569
+325570
+325571
+325572
+325573
+325574
+325575
+325576
+325577
+325578
+325579
+325580
+325581
+325582
+325583
+325584
+325585
+325586
+325587
+325588
+325589
+325590
+325591
+325592
+325593
+325594
+325595
+325596
+325597
+325598
+325599
+325600
+325601
+325602
+325603
+325604
+325605
+325606
+325607
+325608
+325609
+325610
+325611
+325612
+325613
+325614
+325615
+325616
+325617
+325618
+325619
+325620
+325621
+325622
+325623
+325624
+325625
+325626
+325627
+325628
+325629
+325630
+325631
+325632
+325633
+325634
+325635
+325636
+325637
+325638
+325639
+325640
+325641
+325642
+325643
+325644
+325645
+325646
+325647
+325648
+325649
+325650
+325651
+325652
+325653
+325654
+325655
+325656
+325657
+325658
+325659
+325660
+325661
+325662
+325663
+325664
+325665
+325666
+325667
+325668
+325669
+325670
+325671
+325672
+325673
+325674
+325675
+325676
+325677
+325678
+325679
+325680
+325681
+325682
+325683
+325684
+325685
+325686
+325687
+325688
+325689
+325690
+325691
+325692
+325693
+325694
+325695
+325696
+325697
+325698
+325699
+325700
+325701
+325702
+325703
+325704
 
// auto-generated: "lalrpop 0.20.0"
-// sha3: 886ba05289e56a31b948f61a4a701710600ac530e8352df2d8c754e4df9e1268
+// sha3: 2996ae5785e4894ad192603c092e9f2cf9e45bf455767683ace53a4ae6027337
 use crate::tokens::Token;
 use crate::lexer::LexicalError;
 use edlang_ast as ast;
@@ -312227,22 +325781,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -312250,9 +325806,9 @@
         // State 1
         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, -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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, -169, 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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 5, 0, -168, 0, 0, 0, -168, -168, -168, -168, -168, -168, 6, -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 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,
         // State 5
@@ -312268,7 +325824,7 @@
         // State 10
         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, -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,
+        0, -169, -169, -169, -169, 23, -169, -169, -169, -169, -169, 0, 5, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 6, -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 12
         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
@@ -312280,7 +325836,7 @@
         // State 16
         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, -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,
+        0, -169, -169, -169, -169, 23, -169, -169, -169, -169, -169, 0, 5, 0, -169, 0, 86, 0, -169, -169, 0, -169, -169, -169, 6, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 18
         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
@@ -312320,7 +325876,7 @@
         // State 36
         0, 0, 0, 101, 0, 0, 0, 102, 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, 0, 0, 65, 0, 0, 0, 0, 66, -188, 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, -188, 0,
+        0, 0, 0, 65, 0, 0, 0, 0, 66, -191, 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, -191, 0,
         // State 38
         0, 0, 0, 101, 0, 0, 0, 102, 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
@@ -312336,37 +325892,37 @@
         // State 44
         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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 46
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 47
-        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, -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 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, -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, -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 51
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // State 52
         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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 54
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 56
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 57
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 58
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 59
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 60
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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, 26, 0, 0, 0, 0,
         // State 62
@@ -312380,7 +325936,7 @@
         // State 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
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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,
         // State 69
@@ -312424,9 +325980,9 @@
         // State 88
         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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 90
-        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, -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 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, 104, 0,
         // State 92
@@ -312440,19 +325996,19 @@
         // State 96
         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, 0, 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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 37, 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,
         // State 98
         0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 100
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 112, 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, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
         0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 103
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 105
@@ -312464,29 +326020,29 @@
         // State 108
         0, 0, 0, -56, 0, 0, 0, -56, 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 109
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, -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, -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 110
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 111
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 113
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 115
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 116
         0, 0, 0, -57, 0, 0, 0, -57, 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 117
         0, 0, 0, 0, 0, 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,
         // State 118
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 119
         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, 0, 0, 0, 0,
         // State 120
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -312499,7 +326055,7 @@
         // State 2
         0,
         // State 3
-        -165,
+        -168,
         // State 4
         0,
         // State 5
@@ -312515,7 +326071,7 @@
         // State 10
         -111,
         // State 11
-        -166,
+        -169,
         // State 12
         0,
         // State 13
@@ -312527,7 +326083,7 @@
         // State 16
         -60,
         // State 17
-        -166,
+        -169,
         // State 18
         -61,
         // State 19
@@ -312571,7 +326127,7 @@
         // State 38
         0,
         // State 39
-        -219,
+        -222,
         // State 40
         0,
         // State 41
@@ -312583,35 +326139,35 @@
         // State 44
         0,
         // State 45
-        -169,
+        -172,
         // State 46
-        -170,
+        -173,
         // State 47
-        -167,
+        -170,
         // State 48
         -117,
         // State 49
         -119,
         // State 50
-        -195,
+        -198,
         // State 51
-        -217,
+        -220,
         // State 52
         -112,
         // State 53
-        -193,
+        -196,
         // State 54
-        -194,
+        -197,
         // State 55
         0,
         // State 56
         0,
         // State 57
-        -215,
+        -218,
         // State 58
-        -214,
+        -217,
         // State 59
-        -216,
+        -219,
         // State 60
         0,
         // State 61
@@ -312627,7 +326183,7 @@
         // State 66
         0,
         // State 67
-        -168,
+        -171,
         // State 68
         0,
         // State 69
@@ -312671,9 +326227,9 @@
         // State 88
         -113,
         // State 89
-        -192,
+        -195,
         // State 90
-        -196,
+        -199,
         // State 91
         0,
         // State 92
@@ -312699,7 +326255,7 @@
         // State 102
         0,
         // State 103
-        -187,
+        -190,
         // State 104
         0,
         // State 105
@@ -312789,39 +326345,39 @@
                 _ => 11,
             },
             62 => 61,
-            72 => match state {
+            74 => match state {
                 0 => 40,
                 1 => 43,
                 _ => 51,
             },
-            73 => match state {
+            75 => match state {
                 3 => 46,
                 _ => 45,
             },
-            74 => 3,
-            81 => match state {
+            76 => 3,
+            83 => match state {
                 7 => 63,
                 14 => 83,
                 35 => 115,
                 _ => 62,
             },
-            82 => match state {
+            84 => match state {
                 31 => 102,
                 _ => 93,
             },
-            84 => 52,
-            85 => 53,
-            86 => match state {
+            86 => 52,
+            87 => 53,
+            88 => match state {
                 33 => 106,
                 _ => 98,
             },
-            88 => match state {
+            90 => match state {
                 34 => 110,
                 _ => 99,
             },
-            90 => 34,
-            91 => 12,
-            92 => 54,
+            92 => 34,
+            93 => 12,
+            94 => 54,
             _ => 0,
         }
     }
@@ -314063,25 +327619,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -314093,14 +327649,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -314112,19 +327668,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -314136,109 +327692,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -314250,109 +327806,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -314364,268 +327920,292 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
+                }
+            }
+            218 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
-            218 => __state_machine::SimulatedReduce::Accept,
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
-            221 => {
+            221 => __state_machine::SimulatedReduce::Accept,
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -315356,12 +328936,7 @@
                 __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             218 => {
-                // __AssignStmt = AssignStmt => ActionFn(11);
-                let __sym0 = __pop_Variant26(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action11::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             219 => {
                 __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -315370,7 +328945,12 @@
                 __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __AssignStmt = AssignStmt => ActionFn(11);
+                let __sym0 = __pop_Variant26(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action11::<>(__sym0);
+                return Some(Ok(__nt));
             }
             222 => {
                 __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -315474,6 +329054,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -315567,6 +329159,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -315577,13 +329179,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -315667,6 +329269,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -315687,13 +329299,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -315837,66 +329449,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -315907,13 +329519,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -315927,43 +329539,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -315977,13 +329589,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -316017,13 +329629,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -316077,13 +329689,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -316124,10 +329736,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -316138,11 +329750,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -316153,11 +329765,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -316168,13 +329780,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -316185,11 +329797,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -316200,10 +329812,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -316214,11 +329826,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -316229,10 +329841,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -316243,11 +329855,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -316258,10 +329870,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -316272,13 +329884,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -316289,13 +329901,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -316306,10 +329918,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -316320,14 +329932,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -316338,14 +329950,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -316356,10 +329968,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -316370,13 +329982,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -316387,13 +329999,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -316404,10 +330016,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -316418,14 +330030,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -316436,14 +330048,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -316454,10 +330066,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -316468,13 +330080,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -316485,10 +330097,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -316499,11 +330111,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -316514,13 +330126,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -316531,14 +330143,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -316549,13 +330161,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -316566,10 +330178,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -316580,11 +330192,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -316595,13 +330207,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -316612,14 +330224,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -316630,13 +330242,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -316647,10 +330259,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -316661,11 +330273,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -316676,13 +330288,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -316693,14 +330305,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -316711,13 +330323,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -316728,10 +330340,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -316742,11 +330354,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -316757,13 +330369,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -316774,14 +330386,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -316792,13 +330404,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -316809,10 +330421,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -316823,11 +330435,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -316838,13 +330450,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -316855,14 +330467,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -316873,13 +330485,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -316890,10 +330502,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -316904,11 +330516,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -316919,13 +330531,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -316936,14 +330548,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -316954,13 +330566,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -316971,10 +330583,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -316985,11 +330597,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -317000,13 +330612,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -317017,14 +330629,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -317035,10 +330647,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -317049,10 +330661,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -317063,14 +330675,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -317081,15 +330693,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -317100,14 +330712,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -317118,15 +330730,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -317137,11 +330749,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -317152,11 +330764,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -317167,11 +330779,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -317182,11 +330794,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -317197,11 +330809,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -317212,11 +330824,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -317227,11 +330839,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -317242,11 +330854,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -317257,11 +330869,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -317272,11 +330884,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -317287,11 +330899,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -317302,11 +330914,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -317317,11 +330929,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -317332,11 +330944,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -317347,11 +330959,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -317362,11 +330974,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -317377,14 +330989,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -317395,11 +331007,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -317410,10 +331022,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -317424,13 +331036,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -317441,11 +331053,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -317456,11 +331068,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -317471,10 +331083,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -317485,13 +331097,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -317502,11 +331114,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -317517,11 +331129,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -317532,10 +331144,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -317546,13 +331158,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -317563,11 +331175,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -317578,11 +331190,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -317593,10 +331205,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -317607,13 +331219,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -317624,11 +331236,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -317639,11 +331251,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -317654,10 +331266,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -317668,13 +331280,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -317685,11 +331297,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -317700,11 +331312,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -317715,10 +331327,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -317729,13 +331341,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -317746,11 +331358,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -317761,7 +331373,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -317772,7 +331384,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -317783,11 +331395,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -317798,10 +331410,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -317812,13 +331424,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -317829,11 +331441,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -317844,14 +331456,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -317862,11 +331474,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -317877,11 +331489,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -317892,14 +331504,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -317910,13 +331522,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -317927,13 +331539,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -317944,13 +331556,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -317961,11 +331573,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -317976,14 +331588,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -317994,11 +331606,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -318009,14 +331621,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -318027,11 +331639,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -318042,11 +331654,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -318057,10 +331669,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -318071,7 +331683,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -318079,7 +331691,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -318090,14 +331702,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -318108,11 +331720,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -318123,10 +331735,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -318137,7 +331749,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -318146,7 +331758,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -318157,7 +331769,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -318168,7 +331780,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -318179,7 +331791,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -318193,7 +331805,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -318204,7 +331816,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -318216,7 +331828,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -318227,7 +331839,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -318240,7 +331852,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -318251,7 +331863,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -318262,7 +331874,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -318273,7 +331885,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -318286,7 +331898,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -318297,7 +331909,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -318308,7 +331920,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -318319,7 +331931,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -318331,7 +331943,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -318342,7 +331954,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -318352,7 +331964,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -318363,11 +331975,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -318378,11 +331990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -318393,10 +332005,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -318407,11 +332019,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -318422,7 +332034,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -318431,7 +332043,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -318442,7 +332054,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -318451,7 +332063,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -318462,14 +332074,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -318480,7 +332092,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -318490,7 +332102,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -318501,14 +332113,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -318519,7 +332131,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -318530,7 +332142,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -318541,7 +332153,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -318551,7 +332163,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -318562,9 +332174,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -318573,7 +332185,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -318584,9 +332196,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -318594,7 +332206,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -318605,11 +332217,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -318620,13 +332232,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -318637,11 +332249,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -318652,10 +332264,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -318666,11 +332278,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -318681,13 +332293,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -318698,11 +332310,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -318713,13 +332325,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -318730,7 +332342,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -318740,7 +332352,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -318751,7 +332363,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -318760,7 +332372,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -318771,11 +332383,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -318786,13 +332398,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -318801,13 +332415,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -318816,13 +332430,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -318831,15 +332445,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -318848,11 +332460,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -318863,15 +332475,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -318880,16 +332490,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -318898,11 +332507,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -318913,15 +332522,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -318930,13 +332539,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -318945,12 +332557,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -318959,13 +332572,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -318976,13 +332589,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -318991,13 +332604,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -319006,13 +332618,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -319021,13 +332635,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -319036,15 +332650,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -319053,15 +332665,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -319070,15 +332680,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -319087,15 +332695,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -319104,7 +332712,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -319116,62 +332775,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -319180,12 +332786,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -319194,17 +332806,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -319213,16 +332824,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -319231,16 +332839,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -319249,13 +332853,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -319264,12 +332872,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -319278,15 +332890,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -319296,13 +332908,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -319311,13 +332923,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -319326,13 +332937,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -319341,16 +332955,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -319359,13 +332970,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -319374,15 +332985,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -319391,17 +333000,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -319410,18 +333018,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -319430,13 +333033,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -319445,12 +333050,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -319459,13 +333069,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -319474,15 +333089,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -319491,15 +333104,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -319508,15 +333118,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -319525,12 +333133,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -319539,13 +333150,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -319554,13 +333167,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -319569,15 +333184,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -319586,12 +333198,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -319601,13 +333213,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -319616,13 +333228,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -319631,13 +333245,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -319646,13 +333260,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -319661,13 +333275,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -319676,13 +333290,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -319691,18 +333305,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319715,9 +333374,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319730,9 +333389,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319745,9 +333404,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319760,9 +333419,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319775,9 +333434,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319790,9 +333449,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319805,9 +333464,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319820,9 +333479,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319835,9 +333494,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319850,9 +333509,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319865,9 +333524,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319880,9 +333539,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319895,9 +333554,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319910,9 +333569,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319925,9 +333584,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319940,9 +333599,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319955,9 +333614,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319970,9 +333629,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -319985,53 +333644,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -320039,13 +333653,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -320054,13 +333668,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -320069,13 +333683,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -320084,13 +333698,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -320099,15 +333713,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320120,9 +333794,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320130,14 +333804,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320150,9 +333824,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320165,9 +333839,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320180,9 +333854,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320195,9 +333869,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320205,14 +333879,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320220,14 +333894,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320235,14 +333909,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -320250,12 +333924,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__AssignStmt::AssignStmtParser;
@@ -320325,22 +333999,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -320371,7 +334047,7 @@
         // State 0
         0,
         // State 1
-        -220,
+        -223,
         // State 2
         -65,
         // State 3
@@ -321633,25 +335309,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -321663,14 +335339,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -321682,19 +335358,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -321706,109 +335382,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -321820,109 +335496,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -321934,43 +335610,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -321979,223 +335655,247 @@
                     nonterminal_produced: 94,
                 }
             }
-            219 => __state_machine::SimulatedReduce::Accept,
-            220 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    nonterminal_produced: 94,
+                }
+            }
+            220 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
-            222 => {
+            222 => __state_machine::SimulatedReduce::Accept,
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -322929,12 +336629,7 @@
                 __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             219 => {
-                // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(23);
-                let __sym0 = __pop_Variant27(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action23::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             220 => {
                 __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -322943,7 +336638,12 @@
                 __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(23);
+                let __sym0 = __pop_Variant27(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action23::<>(__sym0);
+                return Some(Ok(__nt));
             }
             223 => {
                 __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -323044,6 +336744,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -323137,6 +336849,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -323147,13 +336869,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -323237,6 +336959,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -323257,13 +336989,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -323407,66 +337139,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -323477,13 +337209,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -323497,43 +337229,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -323547,13 +337279,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -323587,13 +337319,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -323647,13 +337379,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -323694,10 +337426,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -323708,11 +337440,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -323723,11 +337455,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -323738,13 +337470,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -323755,11 +337487,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -323770,10 +337502,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -323784,11 +337516,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -323799,10 +337531,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -323813,11 +337545,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -323828,10 +337560,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -323842,13 +337574,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -323859,13 +337591,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -323876,10 +337608,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -323890,14 +337622,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -323908,14 +337640,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -323926,10 +337658,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -323940,13 +337672,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -323957,13 +337689,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -323974,10 +337706,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -323988,14 +337720,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -324006,14 +337738,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -324024,10 +337756,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -324038,13 +337770,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -324055,10 +337787,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -324069,11 +337801,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -324084,13 +337816,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -324101,14 +337833,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -324119,13 +337851,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -324136,10 +337868,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -324150,11 +337882,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -324165,13 +337897,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -324182,14 +337914,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -324200,13 +337932,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -324217,10 +337949,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -324231,11 +337963,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -324246,13 +337978,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -324263,14 +337995,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -324281,13 +338013,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -324298,10 +338030,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -324312,11 +338044,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -324327,13 +338059,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -324344,14 +338076,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -324362,13 +338094,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -324379,10 +338111,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -324393,11 +338125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -324408,13 +338140,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -324425,14 +338157,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -324443,13 +338175,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -324460,10 +338192,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -324474,11 +338206,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -324489,13 +338221,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -324506,14 +338238,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -324524,13 +338256,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -324541,10 +338273,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -324555,11 +338287,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -324570,13 +338302,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -324587,14 +338319,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -324605,10 +338337,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -324619,10 +338351,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -324633,14 +338365,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -324651,15 +338383,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -324670,14 +338402,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -324688,15 +338420,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -324707,11 +338439,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -324722,11 +338454,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -324737,11 +338469,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -324752,11 +338484,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -324767,11 +338499,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -324782,11 +338514,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -324797,11 +338529,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -324812,11 +338544,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -324827,11 +338559,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -324842,11 +338574,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -324857,11 +338589,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -324872,11 +338604,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -324887,11 +338619,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -324902,11 +338634,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -324917,11 +338649,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -324932,11 +338664,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -324947,14 +338679,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -324965,11 +338697,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -324980,10 +338712,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -324994,13 +338726,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -325011,11 +338743,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -325026,11 +338758,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -325041,10 +338773,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -325055,13 +338787,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -325072,11 +338804,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -325087,11 +338819,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -325102,10 +338834,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -325116,13 +338848,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -325133,11 +338865,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -325148,11 +338880,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -325163,10 +338895,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -325177,13 +338909,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -325194,11 +338926,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -325209,11 +338941,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -325224,10 +338956,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -325238,13 +338970,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -325255,11 +338987,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -325270,11 +339002,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -325285,10 +339017,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -325299,13 +339031,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -325316,11 +339048,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -325331,7 +339063,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -325342,7 +339074,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -325353,11 +339085,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -325368,10 +339100,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -325382,13 +339114,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -325399,11 +339131,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -325414,14 +339146,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -325432,11 +339164,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -325447,11 +339179,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -325462,14 +339194,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -325480,13 +339212,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -325497,13 +339229,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -325514,13 +339246,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -325531,11 +339263,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -325546,14 +339278,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -325564,11 +339296,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -325579,14 +339311,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -325597,11 +339329,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -325612,11 +339344,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -325627,10 +339359,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -325641,7 +339373,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -325649,7 +339381,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -325660,14 +339392,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -325678,11 +339410,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -325693,10 +339425,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -325707,7 +339439,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -325716,7 +339448,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -325727,7 +339459,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -325738,7 +339470,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -325749,7 +339481,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -325763,7 +339495,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -325774,7 +339506,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -325786,7 +339518,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -325797,7 +339529,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -325810,7 +339542,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -325821,7 +339553,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -325832,7 +339564,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -325843,7 +339575,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -325856,7 +339588,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -325867,7 +339599,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -325878,7 +339610,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -325889,7 +339621,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -325901,7 +339633,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -325912,7 +339644,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -325922,7 +339654,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -325933,11 +339665,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -325948,11 +339680,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -325963,10 +339695,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -325977,11 +339709,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -325992,7 +339724,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -326001,7 +339733,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -326012,7 +339744,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -326021,7 +339753,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -326032,14 +339764,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -326050,7 +339782,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -326060,7 +339792,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -326071,14 +339803,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -326089,7 +339821,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -326100,7 +339832,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -326111,7 +339843,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -326121,7 +339853,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -326132,9 +339864,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -326143,7 +339875,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -326154,9 +339886,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -326164,7 +339896,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -326175,11 +339907,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -326190,13 +339922,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -326207,11 +339939,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -326222,10 +339954,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -326236,11 +339968,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -326251,13 +339983,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -326268,11 +340000,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -326283,13 +340015,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -326300,7 +340032,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -326310,7 +340042,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -326321,7 +340053,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -326330,7 +340062,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -326341,11 +340073,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -326356,13 +340088,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -326371,13 +340105,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -326386,13 +340120,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -326401,15 +340135,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -326418,11 +340150,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -326433,15 +340165,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -326450,16 +340180,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -326468,11 +340197,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -326483,15 +340212,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -326500,13 +340229,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -326515,12 +340247,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -326529,13 +340262,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -326546,13 +340279,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -326561,13 +340294,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -326576,13 +340308,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -326591,13 +340325,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -326606,15 +340340,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -326623,15 +340355,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -326640,15 +340370,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -326657,15 +340385,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -326674,7 +340402,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -326686,62 +340465,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -326750,12 +340476,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -326764,17 +340496,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -326783,16 +340514,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -326801,16 +340529,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -326819,13 +340543,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -326834,12 +340562,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -326848,15 +340580,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -326866,13 +340598,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -326881,13 +340613,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -326896,13 +340627,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -326911,16 +340645,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -326929,13 +340660,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -326944,15 +340675,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -326961,17 +340690,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -326980,18 +340708,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -327000,13 +340723,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -327015,12 +340740,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -327029,13 +340759,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -327044,15 +340779,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -327061,15 +340794,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -327078,15 +340808,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -327095,12 +340823,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -327109,13 +340840,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -327124,13 +340857,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -327139,15 +340874,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -327156,12 +340888,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -327171,13 +340903,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -327186,13 +340918,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -327201,13 +340935,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -327216,13 +340950,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -327231,13 +340965,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -327246,13 +340980,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -327261,18 +340995,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327285,9 +341064,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327300,9 +341079,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327315,9 +341094,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327330,9 +341109,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327345,9 +341124,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327360,9 +341139,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327375,9 +341154,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327390,9 +341169,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327405,9 +341184,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327420,9 +341199,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327435,9 +341214,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327450,9 +341229,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327465,9 +341244,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327480,9 +341259,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327495,9 +341274,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327510,9 +341289,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327525,9 +341304,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327540,9 +341319,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327555,53 +341334,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -327609,13 +341343,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -327624,13 +341358,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -327639,13 +341373,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -327654,13 +341388,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -327669,15 +341403,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327690,9 +341484,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327700,14 +341494,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327720,9 +341514,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327735,9 +341529,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327750,9 +341544,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327765,9 +341559,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327775,14 +341569,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327790,14 +341584,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327805,14 +341599,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -327820,12 +341614,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub use self::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser;
@@ -327895,22 +341689,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -327931,7 +341727,7 @@
         // State 0
         0,
         // State 1
-        -221,
+        -224,
         // State 2
         -74,
         // State 3
@@ -329183,25 +342979,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -329213,14 +343009,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -329232,19 +343028,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -329256,109 +343052,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -329370,109 +343166,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -329484,43 +343280,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -329532,220 +343328,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
+                    nonterminal_produced: 94,
+                }
+            }
+            220 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
                     nonterminal_produced: 95,
                 }
             }
-            220 => __state_machine::SimulatedReduce::Accept,
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
-            223 => {
+            223 => __state_machine::SimulatedReduce::Accept,
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -330482,12 +344302,7 @@
                 __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             220 => {
-                // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(24);
-                let __sym0 = __pop_Variant27(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action24::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             221 => {
                 __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -330496,7 +344311,12 @@
                 __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(24);
+                let __sym0 = __pop_Variant27(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action24::<>(__sym0);
+                return Some(Ok(__nt));
             }
             224 => {
                 __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -330594,6 +344414,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -330687,6 +344519,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -330697,13 +344539,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -330787,6 +344629,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -330807,13 +344659,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -330957,66 +344809,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -331027,13 +344879,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -331047,43 +344899,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -331097,13 +344949,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -331137,13 +344989,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -331197,13 +345049,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -331244,10 +345096,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -331258,11 +345110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -331273,11 +345125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -331288,13 +345140,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -331305,11 +345157,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -331320,10 +345172,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -331334,11 +345186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -331349,10 +345201,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -331363,11 +345215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -331378,10 +345230,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -331392,13 +345244,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -331409,13 +345261,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -331426,10 +345278,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -331440,14 +345292,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -331458,14 +345310,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -331476,10 +345328,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -331490,13 +345342,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -331507,13 +345359,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -331524,10 +345376,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -331538,14 +345390,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -331556,14 +345408,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -331574,10 +345426,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -331588,13 +345440,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -331605,10 +345457,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -331619,11 +345471,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -331634,13 +345486,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -331651,14 +345503,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -331669,13 +345521,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -331686,10 +345538,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -331700,11 +345552,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -331715,13 +345567,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -331732,14 +345584,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -331750,13 +345602,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -331767,10 +345619,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -331781,11 +345633,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -331796,13 +345648,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -331813,14 +345665,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -331831,13 +345683,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -331848,10 +345700,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -331862,11 +345714,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -331877,13 +345729,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -331894,14 +345746,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -331912,13 +345764,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -331929,10 +345781,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -331943,11 +345795,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -331958,13 +345810,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -331975,14 +345827,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -331993,13 +345845,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -332010,10 +345862,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -332024,11 +345876,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -332039,13 +345891,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -332056,14 +345908,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -332074,13 +345926,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -332091,10 +345943,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -332105,11 +345957,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -332120,13 +345972,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -332137,14 +345989,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -332155,10 +346007,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -332169,10 +346021,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -332183,14 +346035,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -332201,15 +346053,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -332220,14 +346072,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -332238,15 +346090,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -332257,11 +346109,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -332272,11 +346124,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -332287,11 +346139,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -332302,11 +346154,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -332317,11 +346169,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -332332,11 +346184,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -332347,11 +346199,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -332362,11 +346214,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -332377,11 +346229,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -332392,11 +346244,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -332407,11 +346259,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -332422,11 +346274,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -332437,11 +346289,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -332452,11 +346304,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -332467,11 +346319,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -332482,11 +346334,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -332497,14 +346349,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -332515,11 +346367,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -332530,10 +346382,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -332544,13 +346396,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -332561,11 +346413,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -332576,11 +346428,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -332591,10 +346443,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -332605,13 +346457,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -332622,11 +346474,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -332637,11 +346489,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -332652,10 +346504,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -332666,13 +346518,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -332683,11 +346535,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -332698,11 +346550,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -332713,10 +346565,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -332727,13 +346579,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -332744,11 +346596,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -332759,11 +346611,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -332774,10 +346626,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -332788,13 +346640,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -332805,11 +346657,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -332820,11 +346672,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -332835,10 +346687,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -332849,13 +346701,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -332866,11 +346718,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -332881,7 +346733,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -332892,7 +346744,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -332903,11 +346755,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -332918,10 +346770,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -332932,13 +346784,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -332949,11 +346801,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -332964,14 +346816,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -332982,11 +346834,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -332997,11 +346849,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -333012,14 +346864,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -333030,13 +346882,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -333047,13 +346899,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -333064,13 +346916,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -333081,11 +346933,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -333096,14 +346948,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -333114,11 +346966,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -333129,14 +346981,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -333147,11 +346999,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -333162,11 +347014,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -333177,10 +347029,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -333191,7 +347043,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -333199,7 +347051,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -333210,14 +347062,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -333228,11 +347080,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -333243,10 +347095,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -333257,7 +347109,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -333266,7 +347118,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -333277,7 +347129,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -333288,7 +347140,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -333299,7 +347151,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -333313,7 +347165,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -333324,7 +347176,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -333336,7 +347188,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -333347,7 +347199,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -333360,7 +347212,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -333371,7 +347223,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -333382,7 +347234,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -333393,7 +347245,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -333406,7 +347258,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -333417,7 +347269,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -333428,7 +347280,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -333439,7 +347291,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -333451,7 +347303,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -333462,7 +347314,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -333472,7 +347324,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -333483,11 +347335,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -333498,11 +347350,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -333513,10 +347365,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -333527,11 +347379,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -333542,7 +347394,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -333551,7 +347403,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -333562,7 +347414,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -333571,7 +347423,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -333582,14 +347434,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -333600,7 +347452,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -333610,7 +347462,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -333621,14 +347473,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -333639,7 +347491,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -333650,7 +347502,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -333661,7 +347513,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -333671,7 +347523,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -333682,9 +347534,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -333693,7 +347545,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -333704,9 +347556,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -333714,7 +347566,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -333725,11 +347577,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -333740,13 +347592,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -333757,11 +347609,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -333772,10 +347624,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -333786,11 +347638,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -333801,13 +347653,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -333818,11 +347670,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -333833,13 +347685,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -333850,7 +347702,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -333860,7 +347712,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -333871,7 +347723,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -333880,7 +347732,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -333891,11 +347743,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -333906,13 +347758,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -333921,13 +347775,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -333936,13 +347790,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -333951,15 +347805,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -333968,11 +347820,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -333983,15 +347835,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -334000,16 +347850,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -334018,11 +347867,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -334033,15 +347882,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -334050,13 +347899,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -334065,12 +347917,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -334079,13 +347932,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -334096,13 +347949,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -334111,13 +347964,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -334126,13 +347978,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -334141,13 +347995,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -334156,15 +348010,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -334173,15 +348025,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -334190,15 +348040,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -334207,15 +348055,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -334224,7 +348072,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -334236,62 +348135,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -334300,12 +348146,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -334314,17 +348166,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -334333,16 +348184,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -334351,16 +348199,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -334369,13 +348213,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -334384,12 +348232,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -334398,15 +348250,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -334416,13 +348268,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -334431,13 +348283,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -334446,13 +348297,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -334461,16 +348315,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -334479,13 +348330,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -334494,15 +348345,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -334511,17 +348360,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -334530,18 +348378,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -334550,13 +348393,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -334565,12 +348410,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -334579,13 +348429,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -334594,15 +348449,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -334611,15 +348464,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -334628,15 +348478,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -334645,12 +348493,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -334659,13 +348510,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -334674,13 +348527,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -334689,15 +348544,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -334706,12 +348558,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -334721,13 +348573,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -334736,13 +348588,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -334751,13 +348605,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -334766,13 +348620,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -334781,13 +348635,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -334796,13 +348650,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -334811,18 +348665,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334835,9 +348734,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334850,9 +348749,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334865,9 +348764,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334880,9 +348779,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334895,9 +348794,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334910,9 +348809,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334925,9 +348824,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334940,9 +348839,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334955,9 +348854,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334970,9 +348869,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -334985,9 +348884,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335000,9 +348899,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335015,9 +348914,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335030,9 +348929,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335045,9 +348944,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335060,9 +348959,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335075,9 +348974,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335090,9 +348989,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335105,53 +349004,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -335159,13 +349013,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -335174,13 +349028,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -335189,13 +349043,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -335204,13 +349058,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -335219,15 +349073,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335240,9 +349154,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335250,14 +349164,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335270,9 +349184,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335285,9 +349199,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335300,9 +349214,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335315,9 +349229,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335325,14 +349239,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335340,14 +349254,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335355,14 +349269,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -335370,12 +349284,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub use self::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser;
@@ -335445,22 +349359,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -335485,7 +349401,7 @@
         // State 0
         0,
         // State 1
-        -222,
+        -225,
         // State 2
         -77,
         // State 3
@@ -336741,25 +350657,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -336771,14 +350687,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -336790,19 +350706,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -336814,109 +350730,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -336928,109 +350844,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -337042,43 +350958,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -337090,220 +351006,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
+                }
+            }
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            221 => __state_machine::SimulatedReduce::Accept,
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
-            224 => {
+            224 => __state_machine::SimulatedReduce::Accept,
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -338043,12 +351983,7 @@
                 __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             221 => {
-                // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(25);
-                let __sym0 = __pop_Variant27(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action25::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             222 => {
                 __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -338057,7 +351992,12 @@
                 __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(25);
+                let __sym0 = __pop_Variant27(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action25::<>(__sym0);
+                return Some(Ok(__nt));
             }
             225 => {
                 __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -338152,6 +352092,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -338245,6 +352197,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -338255,13 +352217,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -338345,6 +352307,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -338365,13 +352337,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -338515,66 +352487,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -338585,13 +352557,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -338605,43 +352577,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -338655,13 +352627,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -338695,13 +352667,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -338755,13 +352727,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -338802,10 +352774,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -338816,11 +352788,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -338831,11 +352803,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -338846,13 +352818,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -338863,11 +352835,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -338878,10 +352850,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -338892,11 +352864,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -338907,10 +352879,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -338921,11 +352893,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -338936,10 +352908,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -338950,13 +352922,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -338967,13 +352939,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -338984,10 +352956,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -338998,14 +352970,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -339016,14 +352988,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -339034,10 +353006,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -339048,13 +353020,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -339065,13 +353037,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -339082,10 +353054,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -339096,14 +353068,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -339114,14 +353086,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -339132,10 +353104,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -339146,13 +353118,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -339163,10 +353135,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -339177,11 +353149,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -339192,13 +353164,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -339209,14 +353181,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -339227,13 +353199,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -339244,10 +353216,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -339258,11 +353230,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -339273,13 +353245,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -339290,14 +353262,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -339308,13 +353280,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -339325,10 +353297,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -339339,11 +353311,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -339354,13 +353326,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -339371,14 +353343,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -339389,13 +353361,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -339406,10 +353378,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -339420,11 +353392,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -339435,13 +353407,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -339452,14 +353424,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -339470,13 +353442,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -339487,10 +353459,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -339501,11 +353473,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -339516,13 +353488,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -339533,14 +353505,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -339551,13 +353523,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -339568,10 +353540,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -339582,11 +353554,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -339597,13 +353569,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -339614,14 +353586,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -339632,13 +353604,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -339649,10 +353621,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -339663,11 +353635,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -339678,13 +353650,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -339695,14 +353667,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -339713,10 +353685,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -339727,10 +353699,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -339741,14 +353713,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -339759,15 +353731,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -339778,14 +353750,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -339796,15 +353768,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -339815,11 +353787,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -339830,11 +353802,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -339845,11 +353817,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -339860,11 +353832,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -339875,11 +353847,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -339890,11 +353862,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -339905,11 +353877,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -339920,11 +353892,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -339935,11 +353907,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -339950,11 +353922,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -339965,11 +353937,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -339980,11 +353952,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -339995,11 +353967,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -340010,11 +353982,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -340025,11 +353997,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -340040,11 +354012,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -340055,14 +354027,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -340073,11 +354045,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -340088,10 +354060,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -340102,13 +354074,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -340119,11 +354091,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -340134,11 +354106,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -340149,10 +354121,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -340163,13 +354135,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -340180,11 +354152,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -340195,11 +354167,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -340210,10 +354182,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -340224,13 +354196,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -340241,11 +354213,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -340256,11 +354228,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -340271,10 +354243,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -340285,13 +354257,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -340302,11 +354274,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -340317,11 +354289,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -340332,10 +354304,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -340346,13 +354318,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -340363,11 +354335,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -340378,11 +354350,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -340393,10 +354365,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -340407,13 +354379,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -340424,11 +354396,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -340439,7 +354411,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -340450,7 +354422,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -340461,11 +354433,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -340476,10 +354448,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -340490,13 +354462,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -340507,11 +354479,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -340522,14 +354494,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -340540,11 +354512,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -340555,11 +354527,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -340570,14 +354542,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -340588,13 +354560,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -340605,13 +354577,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -340622,13 +354594,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -340639,11 +354611,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -340654,14 +354626,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -340672,11 +354644,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -340687,14 +354659,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -340705,11 +354677,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -340720,11 +354692,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -340735,10 +354707,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -340749,7 +354721,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -340757,7 +354729,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -340768,14 +354740,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -340786,11 +354758,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -340801,10 +354773,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -340815,7 +354787,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -340824,7 +354796,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -340835,7 +354807,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -340846,7 +354818,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -340857,7 +354829,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -340871,7 +354843,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -340882,7 +354854,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -340894,7 +354866,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -340905,7 +354877,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -340918,7 +354890,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -340929,7 +354901,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -340940,7 +354912,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -340951,7 +354923,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -340964,7 +354936,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -340975,7 +354947,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -340986,7 +354958,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -340997,7 +354969,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -341009,7 +354981,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -341020,7 +354992,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -341030,7 +355002,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -341041,11 +355013,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -341056,11 +355028,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -341071,10 +355043,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -341085,11 +355057,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -341100,7 +355072,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -341109,7 +355081,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -341120,7 +355092,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -341129,7 +355101,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -341140,14 +355112,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -341158,7 +355130,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -341168,7 +355140,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -341179,14 +355151,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -341197,7 +355169,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -341208,7 +355180,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -341219,7 +355191,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -341229,7 +355201,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -341240,9 +355212,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -341251,7 +355223,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -341262,9 +355234,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -341272,7 +355244,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -341283,11 +355255,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -341298,13 +355270,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -341315,11 +355287,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -341330,10 +355302,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -341344,11 +355316,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -341359,13 +355331,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -341376,11 +355348,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -341391,13 +355363,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -341408,7 +355380,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -341418,7 +355390,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -341429,7 +355401,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -341438,7 +355410,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -341449,11 +355421,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -341464,13 +355436,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -341479,13 +355453,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -341494,13 +355468,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -341509,15 +355483,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -341526,11 +355498,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -341541,15 +355513,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -341558,16 +355528,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -341576,11 +355545,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -341591,15 +355560,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -341608,13 +355577,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -341623,12 +355595,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -341637,13 +355610,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -341654,13 +355627,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -341669,13 +355642,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -341684,13 +355656,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -341699,13 +355673,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -341714,15 +355688,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -341731,15 +355703,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -341748,15 +355718,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -341765,15 +355733,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -341782,7 +355750,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -341794,62 +355813,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -341858,12 +355824,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -341872,17 +355844,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -341891,16 +355862,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -341909,16 +355877,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -341927,13 +355891,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -341942,12 +355910,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -341956,15 +355928,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -341974,13 +355946,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -341989,13 +355961,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -342004,13 +355975,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -342019,16 +355993,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -342037,13 +356008,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -342052,15 +356023,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -342069,17 +356038,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -342088,18 +356056,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -342108,13 +356071,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -342123,12 +356088,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -342137,13 +356107,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -342152,15 +356127,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -342169,15 +356142,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -342186,15 +356156,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -342203,12 +356171,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -342217,13 +356188,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -342232,13 +356205,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -342247,15 +356222,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -342264,12 +356236,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -342279,13 +356251,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -342294,13 +356266,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -342309,13 +356283,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -342324,13 +356298,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -342339,13 +356313,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -342354,13 +356328,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -342369,18 +356343,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342393,9 +356412,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342408,9 +356427,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342423,9 +356442,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342438,9 +356457,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342453,9 +356472,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342468,9 +356487,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342483,9 +356502,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342498,9 +356517,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342513,9 +356532,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342528,9 +356547,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342543,9 +356562,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342558,9 +356577,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342573,9 +356592,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342588,9 +356607,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342603,9 +356622,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342618,9 +356637,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342633,9 +356652,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342648,9 +356667,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342663,53 +356682,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -342717,13 +356691,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -342732,13 +356706,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -342747,13 +356721,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -342762,13 +356736,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -342777,15 +356751,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342798,9 +356832,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342808,14 +356842,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342828,9 +356862,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342843,9 +356877,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342858,9 +356892,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342873,9 +356907,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342883,14 +356917,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342898,14 +356932,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342913,14 +356947,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -342928,12 +356962,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub use self::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser;
@@ -343003,22 +357037,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -343028,7 +357064,7 @@
         // State 2
         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, -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,
+        0, -169, -169, -169, -169, 13, -169, -169, -169, -169, -169, 0, 14, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 15, -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 4
         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
@@ -343038,13 +357074,13 @@
         // 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, 73, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, -174, 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,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, -177, 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
         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, -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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, -169, 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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 14, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, 15, -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 12
         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
@@ -343070,7 +357106,7 @@
         // 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, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
-        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, -173, 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,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, -176, 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, 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
@@ -343084,7 +357120,7 @@
         // State 30
         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, -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,
+        0, -169, -169, -169, -169, 13, -169, -169, -169, -169, -169, 0, 14, 0, -169, 0, 130, -169, -169, -169, 0, -169, -169, -169, 15, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 32
         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
@@ -343140,7 +357176,7 @@
         // State 58
         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, 104, 0, 0, 0, 0, 105, -188, 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, -188, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, -191, 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, -191, 0,
         // State 60
         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
@@ -343150,9 +357186,9 @@
         // State 63
         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, -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 65
-        0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -175, -175, 0, 0, -175, 0, 0, 0, 0, -175, 0, 0, 0, -175, 0, 0, 0, -175, 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, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 66
         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
@@ -343162,7 +357198,7 @@
         // State 69
         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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 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 71
         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
@@ -343172,19 +357208,19 @@
         // State 74
         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, -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, -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 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, 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 77
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, -172, -172, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, -172, 0,
         // State 78
-        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, -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 79
         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, -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, -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, -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 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, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 83
@@ -343192,35 +357228,35 @@
         // State 84
         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, -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, -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 86
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, -220, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, -220, 0,
         // State 87
         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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, -193, -193, 0, 0, -193, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, -193, 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 89
-        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, -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 90
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 91
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 92
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, -215, -215, 0, 0, -215, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, -218, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, -218, 0,
         // State 93
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, -214, -214, 0, 0, -214, -214, -214, 0, -214, -214, -214, 0, -214, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, -214, 0,
+        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
         // State 94
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, -216, -216, 0, 0, -216, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, -219, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, -219, 0,
         // State 95
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 96
         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, -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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, -173, -173, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, -173, 0,
         // State 98
         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, -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, -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 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, 42, 0, 0, 0, 0,
         // State 101
@@ -343270,7 +357306,7 @@
         // State 123
         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, 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, -218, -218, -218, 0, 0, -218, 0, 0, 0, 0, -218, 0, 0, 0, -218, 0, 0, 0, -218, 0,
+        0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
         // State 125
         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
@@ -343278,7 +357314,7 @@
         // State 127
         -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, -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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, -171, -171, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, -171, 0,
         // State 129
         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
@@ -343286,17 +357322,17 @@
         // State 131
         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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, -192, -192, 0, 0, -192, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, -192, 0,
+        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 133
-        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, -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 134
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, -197, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 52, 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 135
         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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 137
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 139
@@ -343312,15 +357348,15 @@
         // State 144
         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 145
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, -198, 0, -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, -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 146
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 147
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 148
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 149
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 151
@@ -343330,7 +357366,7 @@
         // State 153
         0, 0, 0, 0, 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, -99, 0,
         // State 154
-        0, 0, 0, 0, 0, 0, -187, 0, 0, -187, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 0, 0, -190, 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, -190, 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, 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 156
@@ -343346,11 +357382,11 @@
         // State 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, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
         // State 162
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 163
         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 164
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 165
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 166
@@ -343358,7 +357394,7 @@
         // State 167
         0, 0, 0, -57, 0, 0, 0, -57, 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 168
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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]
@@ -343487,7 +357523,7 @@
         // State 60
         0,
         // State 61
-        -223,
+        -226,
         // State 62
         0,
         // State 63
@@ -343782,22 +357818,22 @@
             63 => 65,
             65 => 66,
             69 => 4,
-            72 => match state {
+            74 => match state {
                 1 | 4 => 67,
                 2 => 73,
                 _ => 86,
             },
-            73 => match state {
+            75 => match state {
                 11 => 97,
                 _ => 77,
             },
-            74 => 11,
-            76 => 68,
-            77 => match state {
+            76 => 11,
+            78 => 68,
+            79 => match state {
                 4 => 79,
                 _ => 69,
             },
-            81 => match state {
+            83 => match state {
                 21 => 121,
                 26 => 125,
                 52 => 157,
@@ -343805,26 +357841,26 @@
                 58 => 166,
                 _ => 101,
             },
-            82 => match state {
+            84 => match state {
                 49 => 153,
                 _ => 142,
             },
-            84 => 87,
-            85 => 88,
-            86 => match state {
+            86 => 87,
+            87 => 88,
+            88 => match state {
                 38 => 135,
                 47 => 150,
                 53 => 158,
                 _ => 152,
             },
-            88 => match state {
+            90 => match state {
                 46 => 146,
                 _ => 136,
             },
-            90 => 46,
-            91 => 19,
-            92 => 89,
-            93 => 70,
+            92 => 46,
+            93 => 19,
+            94 => 89,
+            95 => 70,
             _ => 0,
         }
     }
@@ -345066,25 +359102,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -345096,14 +359132,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -345115,19 +359151,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -345139,109 +359175,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -345253,109 +359289,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -345367,43 +359403,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -345415,220 +359451,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 96,
+                }
+            }
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            222 => __state_machine::SimulatedReduce::Accept,
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
-            225 => {
+            225 => __state_machine::SimulatedReduce::Accept,
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -346371,12 +360431,7 @@
                 __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             222 => {
-                // __Block = Block => ActionFn(7);
-                let __sym0 = __pop_Variant10(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action7::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             223 => {
                 __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -346385,7 +360440,12 @@
                 __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Block = Block => ActionFn(7);
+                let __sym0 = __pop_Variant10(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action7::<>(__sym0);
+                return Some(Ok(__nt));
             }
             226 => {
                 __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -346477,6 +360537,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -346570,6 +360642,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -346580,13 +360662,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -346670,6 +360752,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -346690,13 +360782,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -346840,66 +360932,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -346910,13 +361002,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -346930,43 +361022,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -346980,13 +361072,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347020,13 +361112,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347080,13 +361172,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -347127,10 +361219,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -347141,11 +361233,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -347156,11 +361248,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -347171,13 +361263,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -347188,11 +361280,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -347203,10 +361295,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -347217,11 +361309,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -347232,10 +361324,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -347246,11 +361338,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -347261,10 +361353,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -347275,13 +361367,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -347292,13 +361384,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -347309,10 +361401,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -347323,14 +361415,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -347341,14 +361433,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -347359,10 +361451,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -347373,13 +361465,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -347390,13 +361482,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -347407,10 +361499,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -347421,14 +361513,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -347439,14 +361531,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -347457,10 +361549,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -347471,13 +361563,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -347488,10 +361580,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -347502,11 +361594,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -347517,13 +361609,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -347534,14 +361626,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -347552,13 +361644,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -347569,10 +361661,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -347583,11 +361675,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -347598,13 +361690,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -347615,14 +361707,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -347633,13 +361725,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -347650,10 +361742,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -347664,11 +361756,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -347679,13 +361771,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -347696,14 +361788,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -347714,13 +361806,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -347731,10 +361823,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -347745,11 +361837,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -347760,13 +361852,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -347777,14 +361869,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -347795,13 +361887,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -347812,10 +361904,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -347826,11 +361918,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -347841,13 +361933,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -347858,14 +361950,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -347876,13 +361968,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -347893,10 +361985,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -347907,11 +361999,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -347922,13 +362014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -347939,14 +362031,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -347957,13 +362049,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -347974,10 +362066,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -347988,11 +362080,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -348003,13 +362095,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -348020,14 +362112,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -348038,10 +362130,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -348052,10 +362144,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -348066,14 +362158,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -348084,15 +362176,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -348103,14 +362195,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -348121,15 +362213,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -348140,11 +362232,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -348155,11 +362247,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -348170,11 +362262,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -348185,11 +362277,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -348200,11 +362292,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -348215,11 +362307,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -348230,11 +362322,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -348245,11 +362337,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -348260,11 +362352,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -348275,11 +362367,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -348290,11 +362382,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -348305,11 +362397,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -348320,11 +362412,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -348335,11 +362427,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -348350,11 +362442,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -348365,11 +362457,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -348380,14 +362472,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -348398,11 +362490,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -348413,10 +362505,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -348427,13 +362519,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -348444,11 +362536,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -348459,11 +362551,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -348474,10 +362566,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -348488,13 +362580,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -348505,11 +362597,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -348520,11 +362612,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -348535,10 +362627,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -348549,13 +362641,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -348566,11 +362658,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -348581,11 +362673,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -348596,10 +362688,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -348610,13 +362702,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -348627,11 +362719,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -348642,11 +362734,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -348657,10 +362749,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -348671,13 +362763,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -348688,11 +362780,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -348703,11 +362795,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -348718,10 +362810,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -348732,13 +362824,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -348749,11 +362841,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -348764,7 +362856,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -348775,7 +362867,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -348786,11 +362878,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -348801,10 +362893,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -348815,13 +362907,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -348832,11 +362924,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -348847,14 +362939,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -348865,11 +362957,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -348880,11 +362972,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -348895,14 +362987,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -348913,13 +363005,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -348930,13 +363022,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -348947,13 +363039,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -348964,11 +363056,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -348979,14 +363071,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -348997,11 +363089,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -349012,14 +363104,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -349030,11 +363122,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -349045,11 +363137,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -349060,10 +363152,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -349074,7 +363166,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -349082,7 +363174,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -349093,14 +363185,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -349111,11 +363203,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -349126,10 +363218,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -349140,7 +363232,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -349149,7 +363241,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -349160,7 +363252,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -349171,7 +363263,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -349182,7 +363274,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -349196,7 +363288,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -349207,7 +363299,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -349219,7 +363311,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -349230,7 +363322,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -349243,7 +363335,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -349254,7 +363346,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -349265,7 +363357,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -349276,7 +363368,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -349289,7 +363381,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -349300,7 +363392,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -349311,7 +363403,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -349322,7 +363414,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -349334,7 +363426,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -349345,7 +363437,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -349355,7 +363447,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -349366,11 +363458,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -349381,11 +363473,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -349396,10 +363488,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -349410,11 +363502,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -349425,7 +363517,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -349434,7 +363526,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -349445,7 +363537,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -349454,7 +363546,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -349465,14 +363557,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -349483,7 +363575,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -349493,7 +363585,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -349504,14 +363596,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -349522,7 +363614,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -349533,7 +363625,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -349544,7 +363636,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -349554,7 +363646,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -349565,9 +363657,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -349576,7 +363668,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -349587,9 +363679,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -349597,7 +363689,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -349608,11 +363700,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -349623,13 +363715,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -349640,11 +363732,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -349655,10 +363747,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -349669,11 +363761,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -349684,13 +363776,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -349701,11 +363793,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -349716,13 +363808,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -349733,7 +363825,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -349743,7 +363835,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -349754,7 +363846,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -349763,7 +363855,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -349774,11 +363866,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -349789,13 +363881,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -349804,13 +363898,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -349819,13 +363913,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -349834,15 +363928,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -349851,11 +363943,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -349866,15 +363958,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -349883,16 +363973,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -349901,11 +363990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -349916,15 +364005,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -349933,13 +364022,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -349948,12 +364040,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -349962,13 +364055,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -349979,13 +364072,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -349994,13 +364087,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -350009,13 +364101,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -350024,13 +364118,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -350039,15 +364133,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -350056,15 +364148,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -350073,15 +364163,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -350090,15 +364178,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -350107,7 +364195,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -350119,62 +364258,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -350183,12 +364269,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -350197,17 +364289,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -350216,16 +364307,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -350234,16 +364322,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -350252,13 +364336,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -350267,12 +364355,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -350281,15 +364373,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -350299,13 +364391,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -350314,13 +364406,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -350329,13 +364420,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -350344,16 +364438,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -350362,13 +364453,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -350377,15 +364468,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -350394,17 +364483,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -350413,18 +364501,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -350433,13 +364516,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -350448,12 +364533,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -350462,13 +364552,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -350477,15 +364572,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -350494,15 +364587,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -350511,15 +364601,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -350528,12 +364616,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -350542,13 +364633,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -350557,13 +364650,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -350572,15 +364667,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -350589,12 +364681,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -350604,13 +364696,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -350619,13 +364711,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -350634,13 +364728,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -350649,13 +364743,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -350664,13 +364758,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -350679,13 +364773,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -350694,18 +364788,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350718,9 +364857,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350733,9 +364872,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350748,9 +364887,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350763,9 +364902,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350778,9 +364917,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350793,9 +364932,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350808,9 +364947,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350823,9 +364962,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350838,9 +364977,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350853,9 +364992,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350868,9 +365007,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350883,9 +365022,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350898,9 +365037,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350913,9 +365052,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350928,9 +365067,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350943,9 +365082,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350958,9 +365097,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350973,9 +365112,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -350988,53 +365127,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -351042,13 +365136,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -351057,13 +365151,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -351072,13 +365166,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -351087,13 +365181,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -351102,15 +365196,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351123,9 +365277,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351133,14 +365287,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351153,9 +365307,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351168,9 +365322,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351183,9 +365337,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351198,9 +365352,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351208,14 +365362,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351223,14 +365377,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351238,14 +365392,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -351253,12 +365407,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Block::BlockParser;
@@ -351328,22 +365482,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -351367,7 +365523,7 @@
         // State 9
         0, 0, 83, -111, 0, 0, -111, 84, -111, -111, -111, 0, 0, 0, 85, 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 10
-        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,
+        0, -169, -169, -169, -169, 21, -169, -169, -169, -169, -169, 0, 22, 0, -169, 0, 0, -169, -169, -169, 0, -169, -169, -169, 23, -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 11
         60, 0, 0, 13, 0, 14, 0, 15, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 40, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65,
         // State 12
@@ -351385,7 +365541,7 @@
         // State 18
         60, 0, 0, 13, 0, 14, 0, 15, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 40, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65,
         // State 19
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 22, 0, -168, 0, 0, -168, -168, -168, 0, -168, -168, -168, 23, -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 20
         60, 0, 0, 13, 0, 14, -82, 15, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 40, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65,
         // State 21
@@ -351397,7 +365553,7 @@
         // State 24
         0, 0, 0, 69, 0, 0, 99, 0, 70, 0, 71, 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, 74, 0, 0, 0,
         // State 25
-        0, -166, -166, -166, -166, 21, -166, -166, -166, -166, -166, 0, 22, 0, -166, 0, 100, 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,
+        0, -169, -169, -169, -169, 21, -169, -169, -169, -169, -169, 0, 22, 0, -169, 0, 100, 0, -169, -169, 0, -169, -169, -169, 23, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 26
         0, 0, 83, -110, 0, 0, -110, 84, -110, -110, -110, 0, 0, 0, 85, 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
@@ -351419,7 +365575,7 @@
         // State 35
         60, 0, 0, 13, 0, 14, 0, 15, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 40, 0, 0, 63, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65,
         // State 36
-        0, 0, 0, 69, 0, 0, 0, 0, 70, -188, 71, 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, 74, 0, -188, 0,
+        0, 0, 0, 69, 0, 0, 0, 0, 70, -191, 71, 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, 74, 0, -191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 38
@@ -351427,25 +365583,25 @@
         // State 39
         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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -197, 0, -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, -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,
         // State 41
         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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 43
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 48, 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, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, -198, 0, -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, -201, 0, 0, 0, 0, 0, 0, 0, 0, 16, 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 46
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 47
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 48
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 49
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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,
         // State 51
@@ -351455,31 +365611,31 @@
         // State 53
         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 54
-        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, -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 55
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // State 56
         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 57
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, -193, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 58
-        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, -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 59
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 60
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 61
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, -215, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 62
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, -214, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 63
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, -216, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 64
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 65
         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 66
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 67
         0, 0, 0, -56, 0, 0, 0, -56, 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 68
@@ -351517,7 +365673,7 @@
         // State 84
         -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 85
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, -172, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 86
         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 87
@@ -351535,27 +365691,27 @@
         // State 93
         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 94
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, -173, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 95
         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,
         // State 96
-        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,
+        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 97
         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 98
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, -192, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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,
         // State 99
         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 100
-        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, -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 101
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 102
         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 103
         -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 104
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, -171, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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, 112, 0,
         // State 106
@@ -351569,7 +365725,7 @@
         // State 110
         0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 111
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 113
@@ -351577,7 +365733,7 @@
         // 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, 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 115
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -351658,7 +365814,7 @@
         // State 36
         0,
         // State 37
-        -224,
+        -227,
         // State 38
         0,
         // State 39
@@ -351868,34 +366024,34 @@
                 _ => 10,
             },
             62 => 88,
-            72 => 55,
-            73 => match state {
+            74 => 55,
+            75 => match state {
                 19 => 94,
                 _ => 85,
             },
-            74 => 19,
-            81 => match state {
+            76 => 19,
+            83 => match state {
                 35 => 115,
                 _ => 89,
             },
-            82 => match state {
+            84 => match state {
                 34 => 110,
                 _ => 107,
             },
-            84 => 56,
-            85 => 57,
-            86 => match state {
+            86 => 56,
+            87 => 57,
+            88 => match state {
                 2 => 41,
                 6 => 65,
                 _ => 51,
             },
-            88 => match state {
+            90 => match state {
                 3 => 46,
                 _ => 42,
             },
-            90 => 3,
-            91 => 11,
-            92 => 58,
+            92 => 3,
+            93 => 11,
+            94 => 58,
             _ => 0,
         }
     }
@@ -353137,25 +367293,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -353167,14 +367323,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -353186,19 +367342,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -353210,109 +367366,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -353324,109 +367480,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -353438,43 +367594,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -353486,220 +367642,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 97,
+                }
+            }
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            223 => __state_machine::SimulatedReduce::Accept,
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
-            226 => {
+            226 => __state_machine::SimulatedReduce::Accept,
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -354445,12 +368625,7 @@
                 __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             223 => {
-                // __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));
+                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             224 => {
                 __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -354459,7 +368634,12 @@
                 __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             226 => {
-                __reduce226(__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));
             }
             227 => {
                 __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -354548,6 +368728,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -354641,6 +368833,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -354651,13 +368853,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -354741,6 +368943,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -354761,13 +368973,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -354911,66 +369123,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -354981,13 +369193,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355001,43 +369213,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355051,13 +369263,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355091,13 +369303,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355151,13 +369363,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -355198,10 +369410,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -355212,11 +369424,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -355227,11 +369439,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -355242,13 +369454,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -355259,11 +369471,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -355274,10 +369486,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -355288,11 +369500,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -355303,10 +369515,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -355317,11 +369529,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -355332,10 +369544,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -355346,13 +369558,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -355363,13 +369575,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -355380,10 +369592,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -355394,14 +369606,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -355412,14 +369624,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -355430,10 +369642,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -355444,13 +369656,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -355461,13 +369673,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -355478,10 +369690,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -355492,14 +369704,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -355510,14 +369722,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -355528,10 +369740,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -355542,13 +369754,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -355559,10 +369771,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -355573,11 +369785,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -355588,13 +369800,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -355605,14 +369817,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -355623,13 +369835,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -355640,10 +369852,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -355654,11 +369866,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -355669,13 +369881,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -355686,14 +369898,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -355704,13 +369916,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -355721,10 +369933,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -355735,11 +369947,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -355750,13 +369962,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -355767,14 +369979,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -355785,13 +369997,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -355802,10 +370014,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -355816,11 +370028,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -355831,13 +370043,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -355848,14 +370060,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -355866,13 +370078,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -355883,10 +370095,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -355897,11 +370109,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -355912,13 +370124,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -355929,14 +370141,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -355947,13 +370159,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -355964,10 +370176,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -355978,11 +370190,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -355993,13 +370205,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -356010,14 +370222,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -356028,13 +370240,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -356045,10 +370257,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -356059,11 +370271,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -356074,13 +370286,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -356091,14 +370303,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -356109,10 +370321,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -356123,10 +370335,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -356137,14 +370349,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -356155,15 +370367,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -356174,14 +370386,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -356192,15 +370404,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -356211,11 +370423,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -356226,11 +370438,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -356241,11 +370453,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -356256,11 +370468,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -356271,11 +370483,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -356286,11 +370498,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -356301,11 +370513,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -356316,11 +370528,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -356331,11 +370543,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -356346,11 +370558,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -356361,11 +370573,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -356376,11 +370588,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -356391,11 +370603,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -356406,11 +370618,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -356421,11 +370633,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -356436,11 +370648,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -356451,14 +370663,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -356469,11 +370681,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -356484,10 +370696,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -356498,13 +370710,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -356515,11 +370727,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -356530,11 +370742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -356545,10 +370757,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -356559,13 +370771,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -356576,11 +370788,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -356591,11 +370803,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -356606,10 +370818,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -356620,13 +370832,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -356637,11 +370849,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -356652,11 +370864,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -356667,10 +370879,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -356681,13 +370893,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -356698,11 +370910,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -356713,11 +370925,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -356728,10 +370940,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -356742,13 +370954,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -356759,11 +370971,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -356774,11 +370986,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -356789,10 +371001,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -356803,13 +371015,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -356820,11 +371032,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -356835,7 +371047,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -356846,7 +371058,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -356857,11 +371069,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -356872,10 +371084,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -356886,13 +371098,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -356903,11 +371115,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -356918,14 +371130,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -356936,11 +371148,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -356951,11 +371163,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -356966,14 +371178,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -356984,13 +371196,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -357001,13 +371213,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -357018,13 +371230,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -357035,11 +371247,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -357050,14 +371262,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -357068,11 +371280,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -357083,14 +371295,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -357101,11 +371313,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -357116,11 +371328,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -357131,10 +371343,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -357145,7 +371357,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -357153,7 +371365,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -357164,14 +371376,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -357182,11 +371394,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -357197,10 +371409,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -357211,7 +371423,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -357220,7 +371432,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -357231,7 +371443,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -357242,7 +371454,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -357253,7 +371465,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -357267,7 +371479,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -357278,7 +371490,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -357290,7 +371502,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -357301,7 +371513,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -357314,7 +371526,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -357325,7 +371537,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -357336,7 +371548,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -357347,7 +371559,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -357360,7 +371572,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -357371,7 +371583,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -357382,7 +371594,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -357393,7 +371605,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -357405,7 +371617,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -357416,7 +371628,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -357426,7 +371638,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -357437,11 +371649,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -357452,11 +371664,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -357467,10 +371679,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -357481,11 +371693,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -357496,7 +371708,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -357505,7 +371717,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -357516,7 +371728,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -357525,7 +371737,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -357536,14 +371748,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -357554,7 +371766,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -357564,7 +371776,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -357575,14 +371787,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -357593,7 +371805,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -357604,7 +371816,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -357615,7 +371827,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -357625,7 +371837,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -357636,9 +371848,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -357647,7 +371859,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -357658,9 +371870,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -357668,7 +371880,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -357679,11 +371891,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -357694,13 +371906,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -357711,11 +371923,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -357726,10 +371938,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -357740,11 +371952,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -357755,13 +371967,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -357772,11 +371984,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -357787,13 +371999,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -357804,7 +372016,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -357814,7 +372026,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -357825,7 +372037,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -357834,7 +372046,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -357845,11 +372057,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -357860,13 +372072,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -357875,13 +372089,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -357890,13 +372104,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -357905,15 +372119,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -357922,11 +372134,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -357937,15 +372149,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -357954,16 +372164,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -357972,11 +372181,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -357987,15 +372196,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -358004,13 +372213,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -358019,12 +372231,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -358033,13 +372246,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -358050,13 +372263,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -358065,13 +372278,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -358080,13 +372292,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -358095,13 +372309,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -358110,15 +372324,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -358127,15 +372339,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -358144,15 +372354,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -358161,15 +372369,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -358178,7 +372386,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -358190,62 +372449,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -358254,12 +372460,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -358268,17 +372480,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -358287,16 +372498,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -358305,16 +372513,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -358323,13 +372527,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -358338,12 +372546,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -358352,15 +372564,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -358370,13 +372582,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -358385,13 +372597,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -358400,13 +372611,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -358415,16 +372629,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -358433,13 +372644,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -358448,15 +372659,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -358465,17 +372674,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -358484,18 +372692,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -358504,13 +372707,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -358519,12 +372724,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -358533,13 +372743,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -358548,15 +372763,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -358565,15 +372778,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -358582,15 +372792,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -358599,12 +372807,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -358613,13 +372824,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -358628,13 +372841,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -358643,15 +372858,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -358660,12 +372872,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -358675,13 +372887,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -358690,13 +372902,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -358705,13 +372919,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -358720,13 +372934,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -358735,13 +372949,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -358750,13 +372964,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -358765,18 +372979,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358789,9 +373048,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358804,9 +373063,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358819,9 +373078,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358834,9 +373093,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358849,9 +373108,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358864,9 +373123,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358879,9 +373138,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358894,9 +373153,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358909,9 +373168,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358924,9 +373183,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358939,9 +373198,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358954,9 +373213,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358969,9 +373228,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358984,9 +373243,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -358999,9 +373258,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359014,9 +373273,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359029,9 +373288,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359044,9 +373303,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359059,53 +373318,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -359113,13 +373327,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -359128,13 +373342,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -359143,13 +373357,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -359158,13 +373372,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -359173,15 +373387,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359194,9 +373468,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359204,14 +373478,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359224,9 +373498,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359239,9 +373513,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359254,9 +373528,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359269,9 +373543,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359279,14 +373553,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359294,14 +373568,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359309,14 +373583,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -359324,12 +373598,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Constant::ConstantParser;
@@ -359399,22 +373673,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -359426,7 +373702,7 @@
         // State 3
         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, -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,
+        0, -169, -169, -169, -169, 14, -169, -169, -169, -169, -169, 0, 15, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 16, -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 5
         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
@@ -359442,7 +373718,7 @@
         // State 11
         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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 15, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 16, -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 13
         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
@@ -359454,7 +373730,7 @@
         // State 17
         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, -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,
+        0, -169, -169, -169, -169, 14, -169, -169, -169, -169, -169, 0, 15, 0, -169, 0, 77, 0, -169, -169, 0, -169, -169, -169, 16, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 19
         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
@@ -359482,7 +373758,7 @@
         // State 31
         0, 0, 0, 90, 0, 0, 0, 91, 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, 0, 0, 49, 0, 0, 0, 0, 50, -188, 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, -188, 0,
+        0, 0, 0, 49, 0, 0, 0, 0, 50, -191, 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, -191, 0,
         // State 33
         0, 0, 0, 90, 0, 0, 0, 91, 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
@@ -359490,29 +373766,29 @@
         // 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,
         // 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, -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 37
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // 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,
         // State 39
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 40
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 42
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 43
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 44
         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
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 46
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 47
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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,
         // State 49
@@ -359546,7 +373822,7 @@
         // 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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 65
         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
@@ -359560,25 +373836,25 @@
         // State 70
         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, -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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 72
         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, -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, -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, -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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 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 77
-        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, -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 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 79
         -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, -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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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, 0, 0, 0, 93, 0,
         // State 82
@@ -359590,19 +373866,19 @@
         // State 85
         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 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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,
         // State 87
         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 88
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 89
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 100, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         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, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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
@@ -359612,29 +373888,29 @@
         // State 96
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -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, -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 98
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 103
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 104
         0, 0, 0, -57, 0, 0, 0, -57, 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 105
         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, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -359643,13 +373919,13 @@
         // State 0
         0,
         // State 1
-        -225,
+        -228,
         // State 2
         -121,
         // State 3
         -111,
         // State 4
-        -166,
+        -169,
         // State 5
         0,
         // State 6
@@ -359665,7 +373941,7 @@
         // State 11
         0,
         // State 12
-        -165,
+        -168,
         // State 13
         0,
         // State 14
@@ -359713,27 +373989,27 @@
         // State 35
         -119,
         // State 36
-        -195,
+        -198,
         // State 37
-        -217,
+        -220,
         // State 38
         -112,
         // State 39
-        -193,
+        -196,
         // State 40
-        -194,
+        -197,
         // State 41
         0,
         // State 42
         0,
         // State 43
-        -215,
+        -218,
         // State 44
         -138,
         // State 45
-        -214,
+        -217,
         // State 46
-        -216,
+        -219,
         // State 47
         0,
         // State 48
@@ -359769,7 +374045,7 @@
         // State 63
         0,
         // State 64
-        -169,
+        -172,
         // State 65
         -116,
         // State 66
@@ -359783,25 +374059,25 @@
         // State 70
         -118,
         // State 71
-        -170,
+        -173,
         // State 72
         0,
         // State 73
-        -167,
+        -170,
         // State 74
         -113,
         // State 75
-        -192,
+        -195,
         // State 76
         0,
         // State 77
-        -196,
+        -199,
         // State 78
         -124,
         // State 79
         0,
         // State 80
-        -168,
+        -171,
         // State 81
         0,
         // State 82
@@ -359909,33 +374185,33 @@
                 _ => 4,
             },
             62 => 67,
-            72 => 37,
-            73 => match state {
+            74 => 37,
+            75 => match state {
                 12 => 71,
                 _ => 64,
             },
-            74 => 12,
-            81 => match state {
+            76 => 12,
+            83 => match state {
                 30 => 103,
                 _ => 68,
             },
-            82 => match state {
+            84 => match state {
                 27 => 91,
                 _ => 83,
             },
-            84 => 38,
-            85 => 39,
-            86 => match state {
+            86 => 38,
+            87 => 39,
+            88 => match state {
                 28 => 94,
                 _ => 87,
             },
-            88 => match state {
+            90 => match state {
                 29 => 98,
                 _ => 88,
             },
-            90 => 29,
-            91 => 5,
-            92 => 40,
+            92 => 29,
+            93 => 5,
+            94 => 40,
             _ => 0,
         }
     }
@@ -361177,25 +375453,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -361207,14 +375483,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -361226,19 +375502,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -361250,109 +375526,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -361364,109 +375640,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -361478,43 +375754,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -361526,220 +375802,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 98,
+                }
+            }
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            224 => __state_machine::SimulatedReduce::Accept,
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
-            227 => {
+            227 => __state_machine::SimulatedReduce::Accept,
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -362488,12 +376788,7 @@
                 __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             224 => {
-                // __Expression = Expression => ActionFn(22);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action22::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             225 => {
                 __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -362502,7 +376797,12 @@
                 __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression = Expression => ActionFn(22);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action22::<>(__sym0);
+                return Some(Ok(__nt));
             }
             228 => {
                 __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -362588,6 +376888,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -362681,6 +376993,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -362691,13 +377013,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -362781,6 +377103,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -362801,13 +377133,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -362951,66 +377283,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -363021,13 +377353,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -363041,43 +377373,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -363091,13 +377423,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -363131,13 +377463,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -363191,13 +377523,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -363238,10 +377570,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -363252,11 +377584,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -363267,11 +377599,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -363282,13 +377614,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -363299,11 +377631,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -363314,10 +377646,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -363328,11 +377660,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -363343,10 +377675,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -363357,11 +377689,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -363372,10 +377704,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -363386,13 +377718,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -363403,13 +377735,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -363420,10 +377752,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -363434,14 +377766,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -363452,14 +377784,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -363470,10 +377802,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -363484,13 +377816,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -363501,13 +377833,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -363518,10 +377850,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -363532,14 +377864,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -363550,14 +377882,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -363568,10 +377900,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -363582,13 +377914,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -363599,10 +377931,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -363613,11 +377945,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -363628,13 +377960,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -363645,14 +377977,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -363663,13 +377995,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -363680,10 +378012,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -363694,11 +378026,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -363709,13 +378041,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -363726,14 +378058,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -363744,13 +378076,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -363761,10 +378093,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -363775,11 +378107,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -363790,13 +378122,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -363807,14 +378139,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -363825,13 +378157,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -363842,10 +378174,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -363856,11 +378188,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -363871,13 +378203,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -363888,14 +378220,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -363906,13 +378238,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -363923,10 +378255,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -363937,11 +378269,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -363952,13 +378284,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -363969,14 +378301,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -363987,13 +378319,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -364004,10 +378336,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -364018,11 +378350,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -364033,13 +378365,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -364050,14 +378382,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -364068,13 +378400,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -364085,10 +378417,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -364099,11 +378431,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -364114,13 +378446,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -364131,14 +378463,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -364149,10 +378481,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -364163,10 +378495,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -364177,14 +378509,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -364195,15 +378527,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -364214,14 +378546,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -364232,15 +378564,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -364251,11 +378583,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -364266,11 +378598,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -364281,11 +378613,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -364296,11 +378628,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -364311,11 +378643,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -364326,11 +378658,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -364341,11 +378673,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -364356,11 +378688,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -364371,11 +378703,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -364386,11 +378718,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -364401,11 +378733,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -364416,11 +378748,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -364431,11 +378763,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -364446,11 +378778,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -364461,11 +378793,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -364476,11 +378808,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -364491,14 +378823,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -364509,11 +378841,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -364524,10 +378856,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -364538,13 +378870,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -364555,11 +378887,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -364570,11 +378902,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -364585,10 +378917,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -364599,13 +378931,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -364616,11 +378948,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -364631,11 +378963,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -364646,10 +378978,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -364660,13 +378992,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -364677,11 +379009,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -364692,11 +379024,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -364707,10 +379039,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -364721,13 +379053,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -364738,11 +379070,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -364753,11 +379085,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -364768,10 +379100,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -364782,13 +379114,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -364799,11 +379131,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -364814,11 +379146,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -364829,10 +379161,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -364843,13 +379175,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -364860,11 +379192,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -364875,7 +379207,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -364886,7 +379218,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -364897,11 +379229,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -364912,10 +379244,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -364926,13 +379258,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -364943,11 +379275,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -364958,14 +379290,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -364976,11 +379308,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -364991,11 +379323,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -365006,14 +379338,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -365024,13 +379356,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -365041,13 +379373,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -365058,13 +379390,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -365075,11 +379407,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -365090,14 +379422,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -365108,11 +379440,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -365123,14 +379455,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -365141,11 +379473,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -365156,11 +379488,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -365171,10 +379503,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -365185,7 +379517,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -365193,7 +379525,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -365204,14 +379536,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -365222,11 +379554,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -365237,10 +379569,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -365251,7 +379583,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -365260,7 +379592,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -365271,7 +379603,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -365282,7 +379614,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -365293,7 +379625,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -365307,7 +379639,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -365318,7 +379650,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -365330,7 +379662,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -365341,7 +379673,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -365354,7 +379686,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -365365,7 +379697,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -365376,7 +379708,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -365387,7 +379719,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -365400,7 +379732,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -365411,7 +379743,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -365422,7 +379754,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -365433,7 +379765,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -365445,7 +379777,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -365456,7 +379788,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -365466,7 +379798,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -365477,11 +379809,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -365492,11 +379824,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -365507,10 +379839,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -365521,11 +379853,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -365536,7 +379868,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -365545,7 +379877,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -365556,7 +379888,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -365565,7 +379897,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -365576,14 +379908,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -365594,7 +379926,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -365604,7 +379936,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -365615,14 +379947,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -365633,7 +379965,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -365644,7 +379976,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -365655,7 +379987,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -365665,7 +379997,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -365676,9 +380008,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -365687,7 +380019,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -365698,9 +380030,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -365708,7 +380040,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -365719,11 +380051,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -365734,13 +380066,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -365751,11 +380083,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -365766,10 +380098,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -365780,11 +380112,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -365795,13 +380127,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -365812,11 +380144,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -365827,13 +380159,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -365844,7 +380176,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -365854,7 +380186,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -365865,7 +380197,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -365874,7 +380206,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -365885,11 +380217,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -365900,13 +380232,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -365915,13 +380249,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -365930,13 +380264,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -365945,15 +380279,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -365962,11 +380294,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -365977,15 +380309,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -365994,16 +380324,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -366012,11 +380341,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -366027,15 +380356,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -366044,13 +380373,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -366059,12 +380391,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -366073,13 +380406,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -366090,13 +380423,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -366105,13 +380438,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -366120,13 +380452,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -366135,13 +380469,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -366150,15 +380484,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -366167,15 +380499,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -366184,15 +380514,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -366201,15 +380529,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -366218,7 +380546,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -366230,62 +380609,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -366294,12 +380620,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -366308,17 +380640,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -366327,16 +380658,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -366345,16 +380673,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -366363,13 +380687,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -366378,12 +380706,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -366392,15 +380724,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -366410,13 +380742,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -366425,13 +380757,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -366440,13 +380771,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -366455,16 +380789,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -366473,13 +380804,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -366488,15 +380819,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -366505,17 +380834,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -366524,18 +380852,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -366544,13 +380867,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -366559,12 +380884,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -366573,13 +380903,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -366588,15 +380923,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -366605,15 +380938,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -366622,15 +380952,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -366639,12 +380967,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -366653,13 +380984,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -366668,13 +381001,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -366683,15 +381018,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -366700,12 +381032,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -366715,13 +381047,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -366730,13 +381062,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -366745,13 +381079,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -366760,13 +381094,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -366775,13 +381109,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -366790,13 +381124,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -366805,18 +381139,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366829,9 +381208,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366844,9 +381223,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366859,9 +381238,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366874,9 +381253,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366889,9 +381268,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366904,9 +381283,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366919,9 +381298,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366934,9 +381313,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366949,9 +381328,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366964,9 +381343,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366979,9 +381358,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -366994,9 +381373,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367009,9 +381388,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367024,9 +381403,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367039,9 +381418,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367054,9 +381433,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367069,9 +381448,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367084,9 +381463,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367099,53 +381478,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -367153,13 +381487,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -367168,13 +381502,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -367183,13 +381517,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -367198,13 +381532,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -367213,15 +381547,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367234,9 +381628,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367244,14 +381638,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367264,9 +381658,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367279,9 +381673,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367294,9 +381688,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367309,9 +381703,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367319,14 +381713,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367334,14 +381728,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367349,14 +381743,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -367364,12 +381758,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Expression::ExpressionParser;
@@ -367439,32 +381833,34 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     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, 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, -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,
+        0, -169, -169, -169, -169, 5, -169, -169, -169, -169, -169, 0, 6, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 7, -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 2
         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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 6, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 7, -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 4
         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
@@ -367478,7 +381874,7 @@
         // State 9
         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, -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,
+        0, -169, -169, -169, -169, 5, -169, -169, -169, -169, -169, 0, 6, 0, -169, 0, 72, 0, -169, -169, 0, -169, -169, -169, 7, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 11
         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
@@ -367520,31 +381916,31 @@
         // State 30
         0, 0, 0, 90, 0, 0, 0, 91, 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, 0, 0, 55, 0, 0, 0, 0, 57, -188, 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, -188, 0,
+        0, 0, 0, 55, 0, 0, 0, 0, 57, -191, 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, -191, 0,
         // State 32
         0, 0, 0, 90, 0, 0, 0, 91, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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, -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 35
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 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,
         // State 37
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 38
-        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, -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, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 40
         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, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 42
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 43
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 44
         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
@@ -367554,21 +381950,21 @@
         // State 47
         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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 49
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 50
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 51
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 52
         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, -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, -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 54
         -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
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 56
         -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
@@ -367602,7 +381998,7 @@
         // State 71
         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, -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, -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 73
         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
@@ -367614,7 +382010,7 @@
         // State 77
         -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, -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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 0,
         // 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,
         // State 80
@@ -367630,19 +382026,19 @@
         // State 85
         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 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 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,
         // State 87
         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 88
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 89
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 100, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         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, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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
@@ -367652,29 +382048,29 @@
         // State 96
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -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, -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 98
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 103
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 104
         0, 0, 0, -57, 0, 0, 0, -57, 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 105
         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, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -367683,11 +382079,11 @@
         // State 0
         0,
         // State 1
-        -166,
+        -169,
         // State 2
         0,
         // State 3
-        -165,
+        -168,
         // State 4
         0,
         // State 5
@@ -367747,27 +382143,27 @@
         // State 32
         0,
         // State 33
-        -226,
+        -229,
         // State 34
-        -195,
+        -198,
         // State 35
-        -217,
+        -220,
         // State 36
         -112,
         // State 37
-        -193,
+        -196,
         // State 38
-        -194,
+        -197,
         // State 39
-        -215,
+        -218,
         // State 40
         -138,
         // State 41
-        -214,
+        -217,
         // State 42
-        -216,
+        -219,
         // State 43
-        -169,
+        -172,
         // State 44
         0,
         // State 45
@@ -367783,15 +382179,15 @@
         // State 50
         0,
         // State 51
-        -170,
+        -173,
         // State 52
         0,
         // State 53
-        -167,
+        -170,
         // State 54
         0,
         // State 55
-        -192,
+        -195,
         // State 56
         0,
         // State 57
@@ -367825,7 +382221,7 @@
         // State 71
         0,
         // State 72
-        -196,
+        -199,
         // State 73
         0,
         // State 74
@@ -367837,7 +382233,7 @@
         // State 77
         0,
         // State 78
-        -168,
+        -171,
         // State 79
         0,
         // State 80
@@ -367951,33 +382347,33 @@
                 _ => 1,
             },
             62 => 46,
-            72 => 35,
-            73 => match state {
+            74 => 35,
+            75 => match state {
                 3 => 51,
                 _ => 43,
             },
-            74 => 3,
-            81 => match state {
+            76 => 3,
+            83 => match state {
                 29 => 103,
                 _ => 47,
             },
-            82 => match state {
+            84 => match state {
                 26 => 91,
                 _ => 82,
             },
-            84 => 36,
-            85 => 37,
-            86 => match state {
+            86 => 36,
+            87 => 37,
+            88 => match state {
                 27 => 94,
                 _ => 87,
             },
-            88 => match state {
+            90 => match state {
                 28 => 98,
                 _ => 88,
             },
-            90 => 28,
-            91 => 11,
-            92 => 38,
+            92 => 28,
+            93 => 11,
+            94 => 38,
             _ => 0,
         }
     }
@@ -369219,25 +383615,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -369249,14 +383645,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -369268,19 +383664,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -369292,109 +383688,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -369406,109 +383802,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -369520,43 +383916,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -369568,220 +383964,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 99,
+                }
+            }
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            225 => __state_machine::SimulatedReduce::Accept,
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
-            228 => {
+            228 => __state_machine::SimulatedReduce::Accept,
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -370533,12 +384953,7 @@
                 __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             225 => {
-                // __Expression0 = Expression0 => ActionFn(18);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action18::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             226 => {
                 __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -370547,7 +384962,12 @@
                 __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression0 = Expression0 => ActionFn(18);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action18::<>(__sym0);
+                return Some(Ok(__nt));
             }
             229 => {
                 __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -370630,6 +385050,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -370723,6 +385155,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -370733,13 +385175,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -370823,6 +385265,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -370843,13 +385295,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -370993,66 +385445,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -371063,13 +385515,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371083,43 +385535,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371133,13 +385585,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371173,13 +385625,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371233,13 +385685,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -371280,10 +385732,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -371294,11 +385746,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -371309,11 +385761,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -371324,13 +385776,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -371341,11 +385793,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -371356,10 +385808,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -371370,11 +385822,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -371385,10 +385837,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -371399,11 +385851,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -371414,10 +385866,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -371428,13 +385880,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -371445,13 +385897,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -371462,10 +385914,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -371476,14 +385928,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -371494,14 +385946,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -371512,10 +385964,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -371526,13 +385978,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -371543,13 +385995,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -371560,10 +386012,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -371574,14 +386026,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -371592,14 +386044,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -371610,10 +386062,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -371624,13 +386076,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -371641,10 +386093,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -371655,11 +386107,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -371670,13 +386122,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -371687,14 +386139,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -371705,13 +386157,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -371722,10 +386174,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -371736,11 +386188,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -371751,13 +386203,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -371768,14 +386220,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -371786,13 +386238,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -371803,10 +386255,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -371817,11 +386269,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -371832,13 +386284,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -371849,14 +386301,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -371867,13 +386319,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -371884,10 +386336,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -371898,11 +386350,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -371913,13 +386365,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -371930,14 +386382,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -371948,13 +386400,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -371965,10 +386417,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -371979,11 +386431,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -371994,13 +386446,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -372011,14 +386463,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -372029,13 +386481,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -372046,10 +386498,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -372060,11 +386512,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -372075,13 +386527,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -372092,14 +386544,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -372110,13 +386562,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -372127,10 +386579,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -372141,11 +386593,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -372156,13 +386608,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -372173,14 +386625,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -372191,10 +386643,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -372205,10 +386657,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -372219,14 +386671,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -372237,15 +386689,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -372256,14 +386708,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -372274,15 +386726,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -372293,11 +386745,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -372308,11 +386760,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -372323,11 +386775,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -372338,11 +386790,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -372353,11 +386805,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -372368,11 +386820,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -372383,11 +386835,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -372398,11 +386850,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -372413,11 +386865,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -372428,11 +386880,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -372443,11 +386895,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -372458,11 +386910,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -372473,11 +386925,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -372488,11 +386940,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -372503,11 +386955,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -372518,11 +386970,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -372533,14 +386985,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -372551,11 +387003,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -372566,10 +387018,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -372580,13 +387032,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -372597,11 +387049,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -372612,11 +387064,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -372627,10 +387079,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -372641,13 +387093,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -372658,11 +387110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -372673,11 +387125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -372688,10 +387140,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -372702,13 +387154,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -372719,11 +387171,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -372734,11 +387186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -372749,10 +387201,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -372763,13 +387215,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -372780,11 +387232,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -372795,11 +387247,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -372810,10 +387262,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -372824,13 +387276,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -372841,11 +387293,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -372856,11 +387308,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -372871,10 +387323,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -372885,13 +387337,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -372902,11 +387354,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -372917,7 +387369,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -372928,7 +387380,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -372939,11 +387391,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -372954,10 +387406,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -372968,13 +387420,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -372985,11 +387437,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -373000,14 +387452,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -373018,11 +387470,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -373033,11 +387485,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -373048,14 +387500,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -373066,13 +387518,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -373083,13 +387535,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -373100,13 +387552,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -373117,11 +387569,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -373132,14 +387584,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -373150,11 +387602,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -373165,14 +387617,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -373183,11 +387635,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -373198,11 +387650,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -373213,10 +387665,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -373227,7 +387679,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -373235,7 +387687,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -373246,14 +387698,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -373264,11 +387716,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -373279,10 +387731,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -373293,7 +387745,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -373302,7 +387754,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -373313,7 +387765,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -373324,7 +387776,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -373335,7 +387787,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -373349,7 +387801,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -373360,7 +387812,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -373372,7 +387824,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -373383,7 +387835,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -373396,7 +387848,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -373407,7 +387859,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -373418,7 +387870,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -373429,7 +387881,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -373442,7 +387894,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -373453,7 +387905,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -373464,7 +387916,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -373475,7 +387927,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -373487,7 +387939,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -373498,7 +387950,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -373508,7 +387960,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -373519,11 +387971,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -373534,11 +387986,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -373549,10 +388001,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -373563,11 +388015,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -373578,7 +388030,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -373587,7 +388039,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -373598,7 +388050,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -373607,7 +388059,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -373618,14 +388070,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -373636,7 +388088,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -373646,7 +388098,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -373657,14 +388109,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -373675,7 +388127,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -373686,7 +388138,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -373697,7 +388149,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -373707,7 +388159,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -373718,9 +388170,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -373729,7 +388181,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -373740,9 +388192,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -373750,7 +388202,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -373761,11 +388213,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -373776,13 +388228,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -373793,11 +388245,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -373808,10 +388260,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -373822,11 +388274,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -373837,13 +388289,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -373854,11 +388306,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -373869,13 +388321,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -373886,7 +388338,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -373896,7 +388348,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -373907,7 +388359,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -373916,7 +388368,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -373927,11 +388379,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -373942,13 +388394,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -373957,13 +388411,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -373972,13 +388426,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -373987,15 +388441,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -374004,11 +388456,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -374019,15 +388471,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -374036,16 +388486,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -374054,11 +388503,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -374069,15 +388518,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -374086,13 +388535,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -374101,12 +388553,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -374115,13 +388568,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -374132,13 +388585,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -374147,13 +388600,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -374162,13 +388614,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -374177,13 +388631,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -374192,15 +388646,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -374209,15 +388661,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -374226,15 +388676,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -374243,15 +388691,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -374260,7 +388708,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -374272,62 +388771,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -374336,12 +388782,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -374350,17 +388802,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -374369,16 +388820,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -374387,16 +388835,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -374405,13 +388849,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -374420,12 +388868,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -374434,15 +388886,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -374452,13 +388904,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -374467,13 +388919,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -374482,13 +388933,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -374497,16 +388951,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -374515,13 +388966,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -374530,15 +388981,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -374547,17 +388996,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -374566,18 +389014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -374586,13 +389029,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -374601,12 +389046,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -374615,13 +389065,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -374630,15 +389085,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -374647,15 +389100,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -374664,15 +389114,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -374681,12 +389129,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -374695,13 +389146,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -374710,13 +389163,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -374725,15 +389180,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -374742,12 +389194,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -374757,13 +389209,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -374772,13 +389224,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -374787,13 +389241,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -374802,13 +389256,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -374817,13 +389271,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -374832,13 +389286,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -374847,18 +389301,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -374871,9 +389370,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -374886,9 +389385,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -374901,9 +389400,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -374916,9 +389415,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -374931,9 +389430,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -374946,9 +389445,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -374961,9 +389460,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -374976,9 +389475,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -374991,9 +389490,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375006,9 +389505,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375021,9 +389520,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375036,9 +389535,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375051,9 +389550,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375066,9 +389565,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375081,9 +389580,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375096,9 +389595,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375111,9 +389610,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375126,9 +389625,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375141,53 +389640,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -375195,13 +389649,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -375210,13 +389664,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -375225,13 +389679,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -375240,13 +389694,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -375255,15 +389709,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375276,9 +389790,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375286,14 +389800,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375306,9 +389820,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375321,9 +389835,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375336,9 +389850,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375351,9 +389865,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375361,14 +389875,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375376,14 +389890,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375391,14 +389905,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -375406,12 +389920,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Expression0::Expression0Parser;
@@ -375481,28 +389995,30 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 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 1
-        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,
+        0, -169, -169, -169, -169, 8, -169, -169, -169, -169, -169, 0, 9, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 10, -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 2
         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
@@ -375512,7 +390028,7 @@
         // State 5
         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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 9, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 10, -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 7
         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
@@ -375528,7 +390044,7 @@
         // State 13
         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, -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,
+        0, -169, -169, -169, -169, 8, -169, -169, -169, -169, -169, 0, 9, 0, -169, 0, 76, 0, -169, -169, 0, -169, -169, -169, 10, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 15
         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
@@ -375562,7 +390078,7 @@
         // State 30
         0, 0, 0, 90, 0, 0, 0, 91, 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, 0, 0, 59, 0, 0, 0, 0, 61, -188, 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, -188, 0,
+        0, 0, 0, 59, 0, 0, 0, 0, 61, -191, 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, -191, 0,
         // State 32
         0, 0, 0, 90, 0, 0, 0, 91, 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
@@ -375570,31 +390086,31 @@
         // 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,
         // State 35
-        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, -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 36
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 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,
         // State 38
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 39
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 41
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 42
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 43
         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, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 45
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 46
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 47
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 48
         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
@@ -375608,17 +390124,17 @@
         // State 53
         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
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 55
         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
-        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, -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 57
         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
         -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
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 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
@@ -375652,13 +390168,13 @@
         // State 75
         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, -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, -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 77
         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
         -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, -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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 0,
         // State 80
         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
@@ -375672,19 +390188,19 @@
         // State 85
         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 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 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,
         // State 87
         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 88
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 89
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 100, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         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, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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
@@ -375694,29 +390210,29 @@
         // State 96
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -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, -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 98
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 103
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 104
         0, 0, 0, -57, 0, 0, 0, -57, 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 105
         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, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -375725,7 +390241,7 @@
         // State 0
         0,
         // State 1
-        -166,
+        -169,
         // State 2
         0,
         // State 3
@@ -375735,7 +390251,7 @@
         // State 5
         0,
         // State 6
-        -165,
+        -168,
         // State 7
         0,
         // State 8
@@ -375791,33 +390307,33 @@
         // State 33
         -117,
         // State 34
-        -227,
+        -230,
         // State 35
-        -195,
+        -198,
         // State 36
-        -217,
+        -220,
         // State 37
         -112,
         // State 38
-        -193,
+        -196,
         // State 39
-        -194,
+        -197,
         // State 40
         0,
         // State 41
         0,
         // State 42
-        -215,
+        -218,
         // State 43
         -138,
         // State 44
-        -214,
+        -217,
         // State 45
-        -216,
+        -219,
         // State 46
         0,
         // State 47
-        -169,
+        -172,
         // State 48
         -116,
         // State 49
@@ -375831,17 +390347,17 @@
         // State 53
         -115,
         // State 54
-        -170,
+        -173,
         // State 55
         0,
         // State 56
-        -167,
+        -170,
         // State 57
         -113,
         // State 58
         0,
         // State 59
-        -192,
+        -195,
         // State 60
         0,
         // State 61
@@ -375875,13 +390391,13 @@
         // State 75
         0,
         // State 76
-        -196,
+        -199,
         // State 77
         -124,
         // State 78
         0,
         // State 79
-        -168,
+        -171,
         // State 80
         0,
         // State 81
@@ -375991,33 +390507,33 @@
                 _ => 1,
             },
             62 => 51,
-            72 => 36,
-            73 => match state {
+            74 => 36,
+            75 => match state {
                 6 => 54,
                 _ => 47,
             },
-            74 => 6,
-            81 => match state {
+            76 => 6,
+            83 => match state {
                 29 => 103,
                 _ => 52,
             },
-            82 => match state {
+            84 => match state {
                 26 => 91,
                 _ => 83,
             },
-            84 => 37,
-            85 => 38,
-            86 => match state {
+            86 => 37,
+            87 => 38,
+            88 => match state {
                 27 => 94,
                 _ => 87,
             },
-            88 => match state {
+            90 => match state {
                 28 => 98,
                 _ => 88,
             },
-            90 => 28,
-            91 => 2,
-            92 => 39,
+            92 => 28,
+            93 => 2,
+            94 => 39,
             _ => 0,
         }
     }
@@ -377259,25 +391775,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -377289,14 +391805,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -377308,19 +391824,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -377332,109 +391848,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -377446,109 +391962,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -377560,43 +392076,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -377608,220 +392124,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 100,
+                }
+            }
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            226 => __state_machine::SimulatedReduce::Accept,
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
-            229 => {
+            229 => __state_machine::SimulatedReduce::Accept,
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -378576,12 +393116,7 @@
                 __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             226 => {
-                // __Expression1 = Expression1 => ActionFn(19);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action19::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             227 => {
                 __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -378590,7 +393125,12 @@
                 __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression1 = Expression1 => ActionFn(19);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action19::<>(__sym0);
+                return Some(Ok(__nt));
             }
             230 => {
                 __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -378670,6 +393210,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -378763,6 +393315,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -378773,13 +393335,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -378863,6 +393425,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -378883,13 +393455,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379033,66 +393605,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -379103,13 +393675,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379123,43 +393695,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379173,13 +393745,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379213,13 +393785,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379273,13 +393845,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -379320,10 +393892,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -379334,11 +393906,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -379349,11 +393921,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -379364,13 +393936,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -379381,11 +393953,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -379396,10 +393968,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -379410,11 +393982,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -379425,10 +393997,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -379439,11 +394011,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -379454,10 +394026,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -379468,13 +394040,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -379485,13 +394057,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -379502,10 +394074,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -379516,14 +394088,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -379534,14 +394106,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -379552,10 +394124,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -379566,13 +394138,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -379583,13 +394155,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -379600,10 +394172,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -379614,14 +394186,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -379632,14 +394204,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -379650,10 +394222,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -379664,13 +394236,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -379681,10 +394253,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -379695,11 +394267,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -379710,13 +394282,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -379727,14 +394299,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -379745,13 +394317,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -379762,10 +394334,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -379776,11 +394348,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -379791,13 +394363,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -379808,14 +394380,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -379826,13 +394398,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -379843,10 +394415,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -379857,11 +394429,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -379872,13 +394444,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -379889,14 +394461,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -379907,13 +394479,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -379924,10 +394496,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -379938,11 +394510,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -379953,13 +394525,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -379970,14 +394542,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -379988,13 +394560,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -380005,10 +394577,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -380019,11 +394591,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -380034,13 +394606,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -380051,14 +394623,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -380069,13 +394641,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -380086,10 +394658,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -380100,11 +394672,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -380115,13 +394687,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -380132,14 +394704,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -380150,13 +394722,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -380167,10 +394739,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -380181,11 +394753,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -380196,13 +394768,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -380213,14 +394785,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -380231,10 +394803,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -380245,10 +394817,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -380259,14 +394831,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -380277,15 +394849,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -380296,14 +394868,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -380314,15 +394886,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -380333,11 +394905,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -380348,11 +394920,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -380363,11 +394935,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -380378,11 +394950,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -380393,11 +394965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -380408,11 +394980,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -380423,11 +394995,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -380438,11 +395010,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -380453,11 +395025,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -380468,11 +395040,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -380483,11 +395055,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -380498,11 +395070,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -380513,11 +395085,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -380528,11 +395100,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -380543,11 +395115,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -380558,11 +395130,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -380573,14 +395145,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -380591,11 +395163,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -380606,10 +395178,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -380620,13 +395192,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -380637,11 +395209,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -380652,11 +395224,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -380667,10 +395239,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -380681,13 +395253,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -380698,11 +395270,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -380713,11 +395285,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -380728,10 +395300,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -380742,13 +395314,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -380759,11 +395331,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -380774,11 +395346,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -380789,10 +395361,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -380803,13 +395375,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -380820,11 +395392,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -380835,11 +395407,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -380850,10 +395422,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -380864,13 +395436,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -380881,11 +395453,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -380896,11 +395468,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -380911,10 +395483,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -380925,13 +395497,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -380942,11 +395514,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -380957,7 +395529,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -380968,7 +395540,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -380979,11 +395551,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -380994,10 +395566,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -381008,13 +395580,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -381025,11 +395597,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -381040,14 +395612,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -381058,11 +395630,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -381073,11 +395645,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -381088,14 +395660,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -381106,13 +395678,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -381123,13 +395695,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -381140,13 +395712,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -381157,11 +395729,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -381172,14 +395744,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -381190,11 +395762,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -381205,14 +395777,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -381223,11 +395795,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -381238,11 +395810,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -381253,10 +395825,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -381267,7 +395839,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -381275,7 +395847,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -381286,14 +395858,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -381304,11 +395876,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -381319,10 +395891,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -381333,7 +395905,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -381342,7 +395914,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -381353,7 +395925,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -381364,7 +395936,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -381375,7 +395947,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -381389,7 +395961,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -381400,7 +395972,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -381412,7 +395984,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -381423,7 +395995,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -381436,7 +396008,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -381447,7 +396019,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -381458,7 +396030,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -381469,7 +396041,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -381482,7 +396054,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -381493,7 +396065,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -381504,7 +396076,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -381515,7 +396087,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -381527,7 +396099,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -381538,7 +396110,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -381548,7 +396120,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -381559,11 +396131,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -381574,11 +396146,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -381589,10 +396161,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -381603,11 +396175,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -381618,7 +396190,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -381627,7 +396199,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -381638,7 +396210,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -381647,7 +396219,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -381658,14 +396230,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -381676,7 +396248,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -381686,7 +396258,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -381697,14 +396269,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -381715,7 +396287,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -381726,7 +396298,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -381737,7 +396309,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -381747,7 +396319,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -381758,9 +396330,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -381769,7 +396341,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -381780,9 +396352,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -381790,7 +396362,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -381801,11 +396373,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -381816,13 +396388,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -381833,11 +396405,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -381848,10 +396420,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -381862,11 +396434,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -381877,13 +396449,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -381894,11 +396466,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -381909,13 +396481,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -381926,7 +396498,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -381936,7 +396508,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -381947,7 +396519,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -381956,7 +396528,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -381967,11 +396539,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -381982,13 +396554,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -381997,13 +396571,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -382012,13 +396586,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -382027,15 +396601,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -382044,11 +396616,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -382059,15 +396631,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -382076,16 +396646,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -382094,11 +396663,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -382109,15 +396678,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -382126,13 +396695,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -382141,12 +396713,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -382155,13 +396728,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -382172,13 +396745,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -382187,13 +396760,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -382202,13 +396774,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -382217,13 +396791,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -382232,15 +396806,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -382249,15 +396821,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -382266,15 +396836,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -382283,15 +396851,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -382300,7 +396868,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -382312,62 +396931,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -382376,12 +396942,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -382390,17 +396962,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -382409,16 +396980,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -382427,16 +396995,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -382445,13 +397009,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -382460,12 +397028,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -382474,15 +397046,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -382492,13 +397064,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -382507,13 +397079,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -382522,13 +397093,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -382537,16 +397111,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -382555,13 +397126,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -382570,15 +397141,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -382587,17 +397156,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -382606,18 +397174,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -382626,13 +397189,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -382641,12 +397206,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -382655,13 +397225,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -382670,15 +397245,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -382687,15 +397260,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -382704,15 +397274,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -382721,12 +397289,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -382735,13 +397306,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -382750,13 +397323,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -382765,15 +397340,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -382782,12 +397354,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -382797,13 +397369,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -382812,13 +397384,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -382827,13 +397401,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -382842,13 +397416,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -382857,13 +397431,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -382872,13 +397446,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -382887,18 +397461,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -382911,9 +397530,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -382926,9 +397545,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -382941,9 +397560,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -382956,9 +397575,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -382971,9 +397590,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -382986,9 +397605,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383001,9 +397620,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383016,9 +397635,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383031,9 +397650,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383046,9 +397665,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383061,9 +397680,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383076,9 +397695,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383091,9 +397710,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383106,9 +397725,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383121,9 +397740,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383136,9 +397755,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383151,9 +397770,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383166,9 +397785,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383181,53 +397800,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -383235,13 +397809,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -383250,13 +397824,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -383265,13 +397839,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -383280,13 +397854,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -383295,15 +397869,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383316,9 +397950,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383326,14 +397960,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383346,9 +397980,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383361,9 +397995,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383376,9 +398010,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383391,9 +398025,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383401,14 +398035,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383416,14 +398050,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383431,14 +398065,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -383446,12 +398080,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Expression1::Expression1Parser;
@@ -383521,22 +398155,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -383544,7 +398180,7 @@
         // State 1
         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, -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,
+        0, -169, -169, -169, -169, 10, -169, -169, -169, -169, -169, 0, 11, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 12, -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 3
         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
@@ -383556,7 +398192,7 @@
         // State 7
         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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 11, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 12, -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 9
         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
@@ -383572,7 +398208,7 @@
         // State 15
         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, -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,
+        0, -169, -169, -169, -169, 10, -169, -169, -169, -169, -169, 0, 11, 0, -169, 0, 77, 0, -169, -169, 0, -169, -169, -169, 12, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 17
         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
@@ -383604,7 +398240,7 @@
         // State 31
         0, 0, 0, 90, 0, 0, 0, 91, 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, 0, 0, 68, 0, 0, 0, 0, 70, -188, 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, -188, 0,
+        0, 0, 0, 68, 0, 0, 0, 0, 70, -191, 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, -191, 0,
         // State 33
         0, 0, 0, 90, 0, 0, 0, 91, 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
@@ -383612,29 +398248,29 @@
         // 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,
         // 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, -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 37
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // 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,
         // State 39
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 40
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 42
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 43
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 44
         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
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 46
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 47
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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,
         // State 49
@@ -383652,7 +398288,7 @@
         // 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,
         // State 56
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 57
         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
@@ -383666,17 +398302,17 @@
         // State 62
         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
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 64
         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
-        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, -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 66
         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
         -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
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 69
         -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
@@ -383694,13 +398330,13 @@
         // State 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 77
-        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, -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 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 79
         -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, -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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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, 0, 0, 0, 93, 0,
         // State 82
@@ -383712,19 +398348,19 @@
         // State 85
         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 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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,
         // State 87
         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 88
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 89
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 100, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         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, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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
@@ -383734,29 +398370,29 @@
         // State 96
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -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, -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 98
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 103
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 104
         0, 0, 0, -57, 0, 0, 0, -57, 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 105
         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, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -383765,9 +398401,9 @@
         // State 0
         0,
         // State 1
-        -228,
+        -231,
         // State 2
-        -166,
+        -169,
         // State 3
         0,
         // State 4
@@ -383779,7 +398415,7 @@
         // State 7
         0,
         // State 8
-        -165,
+        -168,
         // State 9
         0,
         // State 10
@@ -383835,27 +398471,27 @@
         // State 35
         -119,
         // State 36
-        -195,
+        -198,
         // State 37
-        -217,
+        -220,
         // State 38
         -112,
         // State 39
-        -193,
+        -196,
         // State 40
-        -194,
+        -197,
         // State 41
         0,
         // State 42
         0,
         // State 43
-        -215,
+        -218,
         // State 44
         -138,
         // State 45
-        -214,
+        -217,
         // State 46
-        -216,
+        -219,
         // State 47
         0,
         // State 48
@@ -383875,7 +398511,7 @@
         // State 55
         0,
         // State 56
-        -169,
+        -172,
         // State 57
         -116,
         // State 58
@@ -383889,17 +398525,17 @@
         // State 62
         -118,
         // State 63
-        -170,
+        -173,
         // State 64
         0,
         // State 65
-        -167,
+        -170,
         // State 66
         -113,
         // State 67
         0,
         // State 68
-        -192,
+        -195,
         // State 69
         0,
         // State 70
@@ -383917,13 +398553,13 @@
         // State 76
         0,
         // State 77
-        -196,
+        -199,
         // State 78
         -124,
         // State 79
         0,
         // State 80
-        -168,
+        -171,
         // State 81
         0,
         // State 82
@@ -384031,33 +398667,33 @@
                 _ => 2,
             },
             62 => 59,
-            72 => 37,
-            73 => match state {
+            74 => 37,
+            75 => match state {
                 8 => 63,
                 _ => 56,
             },
-            74 => 8,
-            81 => match state {
+            76 => 8,
+            83 => match state {
                 30 => 103,
                 _ => 60,
             },
-            82 => match state {
+            84 => match state {
                 27 => 91,
                 _ => 83,
             },
-            84 => 38,
-            85 => 39,
-            86 => match state {
+            86 => 38,
+            87 => 39,
+            88 => match state {
                 28 => 94,
                 _ => 87,
             },
-            88 => match state {
+            90 => match state {
                 29 => 98,
                 _ => 88,
             },
-            90 => 29,
-            91 => 3,
-            92 => 40,
+            92 => 29,
+            93 => 3,
+            94 => 40,
             _ => 0,
         }
     }
@@ -385299,25 +399935,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -385329,14 +399965,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -385348,19 +399984,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -385372,109 +400008,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -385486,109 +400122,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -385600,43 +400236,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -385648,220 +400284,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 101,
+                }
+            }
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            227 => __state_machine::SimulatedReduce::Accept,
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
-            230 => {
+            230 => __state_machine::SimulatedReduce::Accept,
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -386619,12 +401279,7 @@
                 __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             227 => {
-                // __Expression2 = Expression2 => ActionFn(20);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action20::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             228 => {
                 __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -386633,7 +401288,12 @@
                 __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression2 = Expression2 => ActionFn(20);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action20::<>(__sym0);
+                return Some(Ok(__nt));
             }
             231 => {
                 __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -386710,6 +401370,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -386803,6 +401475,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -386813,13 +401495,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -386903,6 +401585,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -386923,13 +401615,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387073,66 +401765,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -387143,13 +401835,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387163,43 +401855,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387213,13 +401905,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387253,13 +401945,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387313,13 +402005,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -387360,10 +402052,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -387374,11 +402066,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -387389,11 +402081,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -387404,13 +402096,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -387421,11 +402113,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -387436,10 +402128,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -387450,11 +402142,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -387465,10 +402157,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -387479,11 +402171,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -387494,10 +402186,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -387508,13 +402200,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -387525,13 +402217,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -387542,10 +402234,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -387556,14 +402248,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -387574,14 +402266,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -387592,10 +402284,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -387606,13 +402298,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -387623,13 +402315,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -387640,10 +402332,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -387654,14 +402346,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -387672,14 +402364,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -387690,10 +402382,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -387704,13 +402396,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -387721,10 +402413,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -387735,11 +402427,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -387750,13 +402442,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -387767,14 +402459,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -387785,13 +402477,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -387802,10 +402494,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -387816,11 +402508,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -387831,13 +402523,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -387848,14 +402540,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -387866,13 +402558,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -387883,10 +402575,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -387897,11 +402589,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -387912,13 +402604,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -387929,14 +402621,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -387947,13 +402639,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -387964,10 +402656,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -387978,11 +402670,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -387993,13 +402685,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -388010,14 +402702,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -388028,13 +402720,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -388045,10 +402737,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -388059,11 +402751,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -388074,13 +402766,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -388091,14 +402783,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -388109,13 +402801,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -388126,10 +402818,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -388140,11 +402832,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -388155,13 +402847,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -388172,14 +402864,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -388190,13 +402882,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -388207,10 +402899,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -388221,11 +402913,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -388236,13 +402928,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -388253,14 +402945,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -388271,10 +402963,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -388285,10 +402977,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -388299,14 +402991,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -388317,15 +403009,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -388336,14 +403028,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -388354,15 +403046,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -388373,11 +403065,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -388388,11 +403080,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -388403,11 +403095,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -388418,11 +403110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -388433,11 +403125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -388448,11 +403140,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -388463,11 +403155,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -388478,11 +403170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -388493,11 +403185,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -388508,11 +403200,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -388523,11 +403215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -388538,11 +403230,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -388553,11 +403245,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -388568,11 +403260,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -388583,11 +403275,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -388598,11 +403290,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -388613,14 +403305,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -388631,11 +403323,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -388646,10 +403338,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -388660,13 +403352,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -388677,11 +403369,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -388692,11 +403384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -388707,10 +403399,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -388721,13 +403413,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -388738,11 +403430,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -388753,11 +403445,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -388768,10 +403460,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -388782,13 +403474,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -388799,11 +403491,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -388814,11 +403506,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -388829,10 +403521,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -388843,13 +403535,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -388860,11 +403552,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -388875,11 +403567,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -388890,10 +403582,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -388904,13 +403596,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -388921,11 +403613,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -388936,11 +403628,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -388951,10 +403643,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -388965,13 +403657,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -388982,11 +403674,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -388997,7 +403689,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -389008,7 +403700,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -389019,11 +403711,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -389034,10 +403726,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -389048,13 +403740,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -389065,11 +403757,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -389080,14 +403772,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -389098,11 +403790,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -389113,11 +403805,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -389128,14 +403820,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -389146,13 +403838,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -389163,13 +403855,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -389180,13 +403872,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -389197,11 +403889,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -389212,14 +403904,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -389230,11 +403922,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -389245,14 +403937,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -389263,11 +403955,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -389278,11 +403970,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -389293,10 +403985,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -389307,7 +403999,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -389315,7 +404007,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -389326,14 +404018,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -389344,11 +404036,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -389359,10 +404051,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -389373,7 +404065,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -389382,7 +404074,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -389393,7 +404085,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -389404,7 +404096,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -389415,7 +404107,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -389429,7 +404121,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -389440,7 +404132,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -389452,7 +404144,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -389463,7 +404155,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -389476,7 +404168,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -389487,7 +404179,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -389498,7 +404190,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -389509,7 +404201,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -389522,7 +404214,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -389533,7 +404225,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -389544,7 +404236,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -389555,7 +404247,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -389567,7 +404259,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -389578,7 +404270,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -389588,7 +404280,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -389599,11 +404291,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -389614,11 +404306,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -389629,10 +404321,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -389643,11 +404335,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -389658,7 +404350,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -389667,7 +404359,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -389678,7 +404370,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -389687,7 +404379,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -389698,14 +404390,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -389716,7 +404408,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -389726,7 +404418,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -389737,14 +404429,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -389755,7 +404447,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -389766,7 +404458,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -389777,7 +404469,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -389787,7 +404479,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -389798,9 +404490,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -389809,7 +404501,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -389820,9 +404512,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -389830,7 +404522,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -389841,11 +404533,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -389856,13 +404548,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -389873,11 +404565,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -389888,10 +404580,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -389902,11 +404594,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -389917,13 +404609,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -389934,11 +404626,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -389949,13 +404641,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -389966,7 +404658,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -389976,7 +404668,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -389987,7 +404679,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -389996,7 +404688,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -390007,11 +404699,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -390022,13 +404714,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -390037,13 +404731,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -390052,13 +404746,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -390067,15 +404761,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -390084,11 +404776,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -390099,15 +404791,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -390116,16 +404806,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -390134,11 +404823,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -390149,15 +404838,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -390166,13 +404855,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -390181,12 +404873,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -390195,13 +404888,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -390212,13 +404905,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -390227,13 +404920,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -390242,13 +404934,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -390257,13 +404951,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -390272,15 +404966,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -390289,15 +404981,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -390306,15 +404996,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -390323,15 +405011,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -390340,7 +405028,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -390352,62 +405091,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -390416,12 +405102,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -390430,17 +405122,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -390449,16 +405140,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -390467,16 +405155,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -390485,13 +405169,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -390500,12 +405188,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -390514,15 +405206,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -390532,13 +405224,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -390547,13 +405239,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -390562,13 +405253,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -390577,16 +405271,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -390595,13 +405286,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -390610,15 +405301,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -390627,17 +405316,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -390646,18 +405334,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -390666,13 +405349,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -390681,12 +405366,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -390695,13 +405385,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -390710,15 +405405,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -390727,15 +405420,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -390744,15 +405434,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -390761,12 +405449,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -390775,13 +405466,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -390790,13 +405483,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -390805,15 +405500,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -390822,12 +405514,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -390837,13 +405529,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -390852,13 +405544,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -390867,13 +405561,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -390882,13 +405576,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -390897,13 +405591,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -390912,13 +405606,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -390927,18 +405621,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -390951,9 +405690,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -390966,9 +405705,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -390981,9 +405720,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -390996,9 +405735,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391011,9 +405750,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391026,9 +405765,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391041,9 +405780,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391056,9 +405795,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391071,9 +405810,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391086,9 +405825,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391101,9 +405840,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391116,9 +405855,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391131,9 +405870,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391146,9 +405885,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391161,9 +405900,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391176,9 +405915,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391191,9 +405930,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391206,9 +405945,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391221,53 +405960,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -391275,13 +405969,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -391290,13 +405984,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -391305,13 +405999,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -391320,13 +406014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -391335,15 +406029,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391356,9 +406110,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391366,14 +406120,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391386,9 +406140,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391401,9 +406155,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391416,9 +406170,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391431,9 +406185,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391441,14 +406195,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391456,14 +406210,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391471,14 +406225,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -391486,12 +406240,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Expression2::Expression2Parser;
@@ -391561,22 +406315,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -391586,7 +406342,7 @@
         // State 2
         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, -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,
+        0, -169, -169, -169, -169, 12, -169, -169, -169, -169, -169, 0, 13, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 14, -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 4
         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
@@ -391600,7 +406356,7 @@
         // State 9
         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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 13, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 14, -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 11
         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
@@ -391614,7 +406370,7 @@
         // State 16
         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, -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,
+        0, -169, -169, -169, -169, 12, -169, -169, -169, -169, -169, 0, 13, 0, -169, 0, 77, 0, -169, -169, 0, -169, -169, -169, 14, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 18
         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
@@ -391644,7 +406400,7 @@
         // State 31
         0, 0, 0, 90, 0, 0, 0, 91, 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, 0, 0, 71, 0, 0, 0, 0, 73, -188, 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, -188, 0,
+        0, 0, 0, 71, 0, 0, 0, 0, 73, -191, 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, -191, 0,
         // State 33
         0, 0, 0, 90, 0, 0, 0, 91, 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
@@ -391652,29 +406408,29 @@
         // 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,
         // 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, -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 37
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // 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,
         // State 39
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 40
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 42
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 43
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 44
         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
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 46
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 47
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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,
         // State 49
@@ -391698,7 +406454,7 @@
         // 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,
         // State 59
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // 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,
         // State 61
@@ -391712,17 +406468,17 @@
         // State 65
         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
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 67
         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
-        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, -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 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,
         // 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
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 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 73
@@ -391734,13 +406490,13 @@
         // State 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 77
-        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, -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 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 79
         -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, -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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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, 0, 0, 0, 93, 0,
         // State 82
@@ -391752,19 +406508,19 @@
         // State 85
         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 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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,
         // State 87
         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 88
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 89
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 100, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         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, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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
@@ -391774,29 +406530,29 @@
         // State 96
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -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, -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 98
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 103
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 104
         0, 0, 0, -57, 0, 0, 0, -57, 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 105
         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, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -391807,9 +406563,9 @@
         // State 1
         -121,
         // State 2
-        -229,
+        -232,
         // State 3
-        -166,
+        -169,
         // State 4
         0,
         // State 5
@@ -391823,7 +406579,7 @@
         // State 9
         0,
         // State 10
-        -165,
+        -168,
         // State 11
         0,
         // State 12
@@ -391875,27 +406631,27 @@
         // State 35
         -119,
         // State 36
-        -195,
+        -198,
         // State 37
-        -217,
+        -220,
         // State 38
         -112,
         // State 39
-        -193,
+        -196,
         // State 40
-        -194,
+        -197,
         // State 41
         0,
         // State 42
         0,
         // State 43
-        -215,
+        -218,
         // State 44
         -138,
         // State 45
-        -214,
+        -217,
         // State 46
-        -216,
+        -219,
         // State 47
         0,
         // State 48
@@ -391921,7 +406677,7 @@
         // State 58
         0,
         // State 59
-        -169,
+        -172,
         // State 60
         -116,
         // State 61
@@ -391935,17 +406691,17 @@
         // State 65
         -118,
         // State 66
-        -170,
+        -173,
         // State 67
         0,
         // State 68
-        -167,
+        -170,
         // State 69
         -113,
         // State 70
         0,
         // State 71
-        -192,
+        -195,
         // State 72
         0,
         // State 73
@@ -391957,13 +406713,13 @@
         // State 76
         0,
         // State 77
-        -196,
+        -199,
         // State 78
         -124,
         // State 79
         0,
         // State 80
-        -168,
+        -171,
         // State 81
         0,
         // State 82
@@ -392071,33 +406827,33 @@
                 _ => 3,
             },
             62 => 62,
-            72 => 37,
-            73 => match state {
+            74 => 37,
+            75 => match state {
                 10 => 66,
                 _ => 59,
             },
-            74 => 10,
-            81 => match state {
+            76 => 10,
+            83 => match state {
                 30 => 103,
                 _ => 63,
             },
-            82 => match state {
+            84 => match state {
                 27 => 91,
                 _ => 83,
             },
-            84 => 38,
-            85 => 39,
-            86 => match state {
+            86 => 38,
+            87 => 39,
+            88 => match state {
                 28 => 94,
                 _ => 87,
             },
-            88 => match state {
+            90 => match state {
                 29 => 98,
                 _ => 88,
             },
-            90 => 29,
-            91 => 4,
-            92 => 40,
+            92 => 29,
+            93 => 4,
+            94 => 40,
             _ => 0,
         }
     }
@@ -393339,25 +408095,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -393369,14 +408125,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -393388,19 +408144,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -393412,109 +408168,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -393526,109 +408282,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -393640,43 +408396,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -393688,220 +408444,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 102,
+                }
+            }
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            228 => __state_machine::SimulatedReduce::Accept,
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
-            231 => {
+            231 => __state_machine::SimulatedReduce::Accept,
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -394662,12 +409442,7 @@
                 __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             228 => {
-                // __Expression3 = Expression3 => ActionFn(21);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action21::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             229 => {
                 __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -394676,7 +409451,12 @@
                 __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression3 = Expression3 => ActionFn(21);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action21::<>(__sym0);
+                return Some(Ok(__nt));
             }
             232 => {
                 __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -394750,6 +409530,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -394843,6 +409635,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -394853,13 +409655,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -394943,6 +409745,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -394963,13 +409775,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -395113,66 +409925,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -395183,13 +409995,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -395203,43 +410015,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -395253,13 +410065,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -395293,13 +410105,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -395353,13 +410165,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -395400,10 +410212,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -395414,11 +410226,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -395429,11 +410241,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -395444,13 +410256,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -395461,11 +410273,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -395476,10 +410288,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -395490,11 +410302,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -395505,10 +410317,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -395519,11 +410331,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -395534,10 +410346,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -395548,13 +410360,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -395565,13 +410377,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -395582,10 +410394,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -395596,14 +410408,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -395614,14 +410426,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -395632,10 +410444,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -395646,13 +410458,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -395663,13 +410475,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -395680,10 +410492,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -395694,14 +410506,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -395712,14 +410524,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -395730,10 +410542,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -395744,13 +410556,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -395761,10 +410573,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -395775,11 +410587,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -395790,13 +410602,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -395807,14 +410619,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -395825,13 +410637,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -395842,10 +410654,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -395856,11 +410668,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -395871,13 +410683,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -395888,14 +410700,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -395906,13 +410718,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -395923,10 +410735,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -395937,11 +410749,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -395952,13 +410764,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -395969,14 +410781,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -395987,13 +410799,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -396004,10 +410816,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -396018,11 +410830,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -396033,13 +410845,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -396050,14 +410862,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -396068,13 +410880,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -396085,10 +410897,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -396099,11 +410911,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -396114,13 +410926,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -396131,14 +410943,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -396149,13 +410961,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -396166,10 +410978,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -396180,11 +410992,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -396195,13 +411007,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -396212,14 +411024,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -396230,13 +411042,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -396247,10 +411059,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -396261,11 +411073,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -396276,13 +411088,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -396293,14 +411105,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -396311,10 +411123,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -396325,10 +411137,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -396339,14 +411151,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -396357,15 +411169,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -396376,14 +411188,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -396394,15 +411206,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -396413,11 +411225,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -396428,11 +411240,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -396443,11 +411255,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -396458,11 +411270,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -396473,11 +411285,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -396488,11 +411300,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -396503,11 +411315,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -396518,11 +411330,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -396533,11 +411345,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -396548,11 +411360,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -396563,11 +411375,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -396578,11 +411390,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -396593,11 +411405,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -396608,11 +411420,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -396623,11 +411435,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -396638,11 +411450,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -396653,14 +411465,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -396671,11 +411483,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -396686,10 +411498,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -396700,13 +411512,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -396717,11 +411529,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -396732,11 +411544,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -396747,10 +411559,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -396761,13 +411573,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -396778,11 +411590,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -396793,11 +411605,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -396808,10 +411620,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -396822,13 +411634,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -396839,11 +411651,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -396854,11 +411666,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -396869,10 +411681,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -396883,13 +411695,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -396900,11 +411712,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -396915,11 +411727,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -396930,10 +411742,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -396944,13 +411756,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -396961,11 +411773,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -396976,11 +411788,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -396991,10 +411803,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -397005,13 +411817,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -397022,11 +411834,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -397037,7 +411849,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -397048,7 +411860,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -397059,11 +411871,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -397074,10 +411886,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -397088,13 +411900,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -397105,11 +411917,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -397120,14 +411932,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -397138,11 +411950,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -397153,11 +411965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -397168,14 +411980,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -397186,13 +411998,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -397203,13 +412015,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -397220,13 +412032,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -397237,11 +412049,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -397252,14 +412064,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -397270,11 +412082,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -397285,14 +412097,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -397303,11 +412115,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -397318,11 +412130,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -397333,10 +412145,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -397347,7 +412159,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -397355,7 +412167,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -397366,14 +412178,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -397384,11 +412196,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -397399,10 +412211,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -397413,7 +412225,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -397422,7 +412234,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -397433,7 +412245,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -397444,7 +412256,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -397455,7 +412267,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -397469,7 +412281,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -397480,7 +412292,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -397492,7 +412304,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -397503,7 +412315,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -397516,7 +412328,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -397527,7 +412339,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -397538,7 +412350,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -397549,7 +412361,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -397562,7 +412374,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -397573,7 +412385,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -397584,7 +412396,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -397595,7 +412407,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -397607,7 +412419,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -397618,7 +412430,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -397628,7 +412440,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -397639,11 +412451,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -397654,11 +412466,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -397669,10 +412481,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -397683,11 +412495,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -397698,7 +412510,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -397707,7 +412519,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -397718,7 +412530,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -397727,7 +412539,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -397738,14 +412550,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -397756,7 +412568,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -397766,7 +412578,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -397777,14 +412589,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -397795,7 +412607,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -397806,7 +412618,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -397817,7 +412629,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -397827,7 +412639,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -397838,9 +412650,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -397849,7 +412661,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -397860,9 +412672,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -397870,7 +412682,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -397881,11 +412693,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -397896,13 +412708,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -397913,11 +412725,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -397928,10 +412740,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -397942,11 +412754,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -397957,13 +412769,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -397974,11 +412786,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -397989,13 +412801,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -398006,7 +412818,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -398016,7 +412828,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -398027,7 +412839,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -398036,7 +412848,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -398047,11 +412859,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -398062,13 +412874,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -398077,13 +412891,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -398092,13 +412906,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -398107,15 +412921,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -398124,11 +412936,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -398139,15 +412951,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -398156,16 +412966,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -398174,11 +412983,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -398189,15 +412998,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -398206,13 +413015,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -398221,12 +413033,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -398235,13 +413048,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -398252,13 +413065,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -398267,13 +413080,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -398282,13 +413094,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -398297,13 +413111,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -398312,15 +413126,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -398329,15 +413141,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -398346,15 +413156,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -398363,15 +413171,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -398380,7 +413188,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -398392,62 +413251,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -398456,12 +413262,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -398470,17 +413282,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -398489,16 +413300,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -398507,16 +413315,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -398525,13 +413329,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -398540,12 +413348,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -398554,15 +413366,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -398572,13 +413384,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -398587,13 +413399,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -398602,13 +413413,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -398617,16 +413431,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -398635,13 +413446,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -398650,15 +413461,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -398667,17 +413476,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -398686,18 +413494,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -398706,13 +413509,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -398721,12 +413526,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -398735,13 +413545,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -398750,15 +413565,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -398767,15 +413580,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -398784,15 +413594,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -398801,12 +413609,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -398815,13 +413626,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -398830,13 +413643,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -398845,15 +413660,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -398862,12 +413674,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -398877,13 +413689,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -398892,13 +413704,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -398907,13 +413721,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -398922,13 +413736,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -398937,13 +413751,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -398952,13 +413766,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -398967,18 +413781,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -398991,9 +413850,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399006,9 +413865,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399021,9 +413880,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399036,9 +413895,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399051,9 +413910,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399066,9 +413925,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399081,9 +413940,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399096,9 +413955,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399111,9 +413970,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399126,9 +413985,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399141,9 +414000,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399156,9 +414015,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399171,9 +414030,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399186,9 +414045,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399201,9 +414060,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399216,9 +414075,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399231,9 +414090,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399246,9 +414105,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399261,53 +414120,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -399315,13 +414129,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -399330,13 +414144,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -399345,13 +414159,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -399360,13 +414174,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -399375,15 +414189,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399396,9 +414270,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399406,14 +414280,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399426,9 +414300,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399441,9 +414315,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399456,9 +414330,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399471,9 +414345,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399481,14 +414355,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399496,14 +414370,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399511,14 +414385,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -399526,12 +414400,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Expression3::Expression3Parser;
@@ -399601,22 +414475,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -399632,7 +414508,7 @@
         // State 5
         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, -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,
+        0, -169, -169, -169, -169, 2, -169, -169, -169, -169, -169, 0, 17, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 18, -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 7
         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
@@ -399650,7 +414526,7 @@
         // State 14
         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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 17, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 18, -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 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
@@ -399660,7 +414536,7 @@
         // State 19
         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, -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,
+        0, -169, -169, -169, -169, 2, -169, -169, -169, -169, -169, 0, 17, 0, -169, 0, 81, 0, -169, -169, 0, -169, -169, -169, 18, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 21
         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
@@ -399682,7 +414558,7 @@
         // State 30
         0, 0, 0, 91, 0, 0, 0, 92, 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, 52, 0, 0, 0, 0, 53, -188, 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, -188, 0,
+        0, 0, 0, 52, 0, 0, 0, 0, 53, -191, 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, -191, 0,
         // State 32
         0, 0, 0, 91, 0, 0, 0, 92, 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
@@ -399698,27 +414574,27 @@
         // State 38
         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
-        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, -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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 43
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 45
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 46
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 47
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 48
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 49
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 50
         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
@@ -399756,7 +414632,7 @@
         // 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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 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
@@ -399772,19 +414648,19 @@
         // State 75
         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, -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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 77
-        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, -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 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 79
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 80
         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, -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, -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 82
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0,
         // State 84
@@ -399794,19 +414670,19 @@
         // State 86
         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 87
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 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,
         // State 88
         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 89
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 90
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
         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, -99, 0,
         // State 93
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 95
@@ -399816,29 +414692,29 @@
         // State 97
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -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, -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 99
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 104
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 105
         0, 0, 0, -57, 0, 0, 0, -57, 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 106
         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, 0, 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, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 108
         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,
         // State 109
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -399911,7 +414787,7 @@
         // State 32
         0,
         // State 33
-        -230,
+        -233,
         // State 34
         0,
         // State 35
@@ -400118,33 +414994,33 @@
                 _ => 6,
             },
             62 => 71,
-            72 => 40,
-            73 => match state {
+            74 => 40,
+            75 => match state {
                 15 => 76,
                 _ => 68,
             },
-            74 => 15,
-            81 => match state {
+            76 => 15,
+            83 => match state {
                 29 => 104,
                 _ => 72,
             },
-            82 => match state {
+            84 => match state {
                 26 => 92,
                 _ => 85,
             },
-            84 => 41,
-            85 => 42,
-            86 => match state {
+            86 => 41,
+            87 => 42,
+            88 => match state {
                 27 => 95,
                 _ => 88,
             },
-            88 => match state {
+            90 => match state {
                 28 => 99,
                 _ => 89,
             },
-            90 => 28,
-            91 => 7,
-            92 => 43,
+            92 => 28,
+            93 => 7,
+            94 => 43,
             _ => 0,
         }
     }
@@ -401386,25 +416262,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -401416,14 +416292,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -401435,19 +416311,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -401459,109 +416335,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -401573,109 +416449,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -401687,43 +416563,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -401735,220 +416611,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 103,
+                }
+            }
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            229 => __state_machine::SimulatedReduce::Accept,
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
-            232 => {
+            232 => __state_machine::SimulatedReduce::Accept,
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -402712,12 +417612,7 @@
                 __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             229 => {
-                // __FnCallExpr = FnCallExpr => ActionFn(9);
-                let __sym0 = __pop_Variant34(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action9::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             230 => {
                 __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -402726,7 +417621,12 @@
                 __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __FnCallExpr = FnCallExpr => ActionFn(9);
+                let __sym0 = __pop_Variant34(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action9::<>(__sym0);
+                return Some(Ok(__nt));
             }
             233 => {
                 __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -402797,6 +417697,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -402890,6 +417802,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -402900,13 +417822,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -402990,6 +417912,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -403010,13 +417942,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -403160,66 +418092,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -403230,13 +418162,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -403250,43 +418182,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -403300,13 +418232,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -403340,13 +418272,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -403400,13 +418332,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -403447,10 +418379,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -403461,11 +418393,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -403476,11 +418408,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -403491,13 +418423,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -403508,11 +418440,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -403523,10 +418455,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -403537,11 +418469,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -403552,10 +418484,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -403566,11 +418498,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -403581,10 +418513,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -403595,13 +418527,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -403612,13 +418544,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -403629,10 +418561,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -403643,14 +418575,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -403661,14 +418593,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -403679,10 +418611,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -403693,13 +418625,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -403710,13 +418642,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -403727,10 +418659,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -403741,14 +418673,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -403759,14 +418691,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -403777,10 +418709,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -403791,13 +418723,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -403808,10 +418740,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -403822,11 +418754,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -403837,13 +418769,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -403854,14 +418786,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -403872,13 +418804,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -403889,10 +418821,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -403903,11 +418835,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -403918,13 +418850,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -403935,14 +418867,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -403953,13 +418885,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -403970,10 +418902,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -403984,11 +418916,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -403999,13 +418931,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -404016,14 +418948,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -404034,13 +418966,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -404051,10 +418983,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -404065,11 +418997,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -404080,13 +419012,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -404097,14 +419029,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -404115,13 +419047,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -404132,10 +419064,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -404146,11 +419078,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -404161,13 +419093,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -404178,14 +419110,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -404196,13 +419128,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -404213,10 +419145,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -404227,11 +419159,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -404242,13 +419174,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -404259,14 +419191,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -404277,13 +419209,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -404294,10 +419226,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -404308,11 +419240,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -404323,13 +419255,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -404340,14 +419272,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -404358,10 +419290,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -404372,10 +419304,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -404386,14 +419318,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -404404,15 +419336,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -404423,14 +419355,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -404441,15 +419373,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -404460,11 +419392,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -404475,11 +419407,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -404490,11 +419422,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -404505,11 +419437,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -404520,11 +419452,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -404535,11 +419467,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -404550,11 +419482,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -404565,11 +419497,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -404580,11 +419512,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -404595,11 +419527,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -404610,11 +419542,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -404625,11 +419557,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -404640,11 +419572,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -404655,11 +419587,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -404670,11 +419602,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -404685,11 +419617,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -404700,14 +419632,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -404718,11 +419650,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -404733,10 +419665,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -404747,13 +419679,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -404764,11 +419696,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -404779,11 +419711,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -404794,10 +419726,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -404808,13 +419740,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -404825,11 +419757,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -404840,11 +419772,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -404855,10 +419787,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -404869,13 +419801,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -404886,11 +419818,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -404901,11 +419833,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -404916,10 +419848,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -404930,13 +419862,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -404947,11 +419879,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -404962,11 +419894,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -404977,10 +419909,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -404991,13 +419923,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -405008,11 +419940,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -405023,11 +419955,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -405038,10 +419970,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -405052,13 +419984,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -405069,11 +420001,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -405084,7 +420016,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -405095,7 +420027,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -405106,11 +420038,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -405121,10 +420053,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -405135,13 +420067,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -405152,11 +420084,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -405167,14 +420099,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -405185,11 +420117,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -405200,11 +420132,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -405215,14 +420147,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -405233,13 +420165,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -405250,13 +420182,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -405267,13 +420199,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -405284,11 +420216,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -405299,14 +420231,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -405317,11 +420249,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -405332,14 +420264,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -405350,11 +420282,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -405365,11 +420297,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -405380,10 +420312,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -405394,7 +420326,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -405402,7 +420334,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -405413,14 +420345,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -405431,11 +420363,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -405446,10 +420378,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -405460,7 +420392,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -405469,7 +420401,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -405480,7 +420412,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -405491,7 +420423,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -405502,7 +420434,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -405516,7 +420448,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -405527,7 +420459,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -405539,7 +420471,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -405550,7 +420482,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -405563,7 +420495,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -405574,7 +420506,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -405585,7 +420517,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -405596,7 +420528,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -405609,7 +420541,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -405620,7 +420552,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -405631,7 +420563,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -405642,7 +420574,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -405654,7 +420586,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -405665,7 +420597,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -405675,7 +420607,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -405686,11 +420618,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -405701,11 +420633,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -405716,10 +420648,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -405730,11 +420662,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -405745,7 +420677,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -405754,7 +420686,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -405765,7 +420697,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -405774,7 +420706,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -405785,14 +420717,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -405803,7 +420735,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -405813,7 +420745,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -405824,14 +420756,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -405842,7 +420774,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -405853,7 +420785,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -405864,7 +420796,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -405874,7 +420806,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -405885,9 +420817,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -405896,7 +420828,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -405907,9 +420839,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -405917,7 +420849,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -405928,11 +420860,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -405943,13 +420875,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -405960,11 +420892,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -405975,10 +420907,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -405989,11 +420921,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -406004,13 +420936,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -406021,11 +420953,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -406036,13 +420968,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -406053,7 +420985,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -406063,7 +420995,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -406074,7 +421006,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -406083,7 +421015,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -406094,11 +421026,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -406109,13 +421041,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -406124,13 +421058,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -406139,13 +421073,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -406154,15 +421088,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -406171,11 +421103,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -406186,15 +421118,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -406203,16 +421133,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -406221,11 +421150,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -406236,15 +421165,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -406253,13 +421182,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -406268,12 +421200,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -406282,13 +421215,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -406299,13 +421232,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -406314,13 +421247,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -406329,13 +421261,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -406344,13 +421278,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -406359,15 +421293,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -406376,15 +421308,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -406393,15 +421323,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -406410,15 +421338,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -406427,7 +421355,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -406439,62 +421418,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -406503,12 +421429,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -406517,17 +421449,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -406536,16 +421467,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -406554,16 +421482,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -406572,13 +421496,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -406587,12 +421515,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -406601,15 +421533,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -406619,13 +421551,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -406634,13 +421566,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -406649,13 +421580,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -406664,16 +421598,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -406682,13 +421613,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -406697,15 +421628,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -406714,17 +421643,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -406733,18 +421661,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -406753,13 +421676,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -406768,12 +421693,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -406782,13 +421712,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -406797,15 +421732,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -406814,15 +421747,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -406831,15 +421761,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -406848,12 +421776,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -406862,13 +421793,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -406877,13 +421810,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -406892,15 +421827,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -406909,12 +421841,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -406924,13 +421856,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -406939,13 +421871,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -406954,13 +421888,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -406969,13 +421903,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -406984,13 +421918,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -406999,13 +421933,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -407014,18 +421948,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407038,9 +422017,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407053,9 +422032,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407068,9 +422047,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407083,9 +422062,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407098,9 +422077,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407113,9 +422092,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407128,9 +422107,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407143,9 +422122,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407158,9 +422137,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407173,9 +422152,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407188,9 +422167,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407203,9 +422182,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407218,9 +422197,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407233,9 +422212,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407248,9 +422227,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407263,9 +422242,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407278,9 +422257,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407293,9 +422272,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407308,53 +422287,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -407362,13 +422296,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -407377,13 +422311,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -407392,13 +422326,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -407407,13 +422341,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -407422,15 +422356,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407443,9 +422437,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407453,14 +422447,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407473,9 +422467,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407488,9 +422482,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407503,9 +422497,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407518,9 +422512,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407528,14 +422522,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407543,14 +422537,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407558,14 +422552,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -407573,12 +422567,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__FnCallExpr::FnCallExprParser;
@@ -407648,22 +422642,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -407685,25 +422681,25 @@
         // 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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, -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, -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,
         // 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 12
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 17, 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, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, -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, -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 15
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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 20
@@ -407711,7 +422707,7 @@
         // State 21
         0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 23
         0, 0, 0, -56, 0, 0, 0, -56, 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 24
@@ -407719,7 +422715,7 @@
         // State 25
         0, 0, 0, -57, 0, 0, 0, -57, 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 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -407738,13 +422734,13 @@
         // State 5
         0,
         // State 6
-        -231,
+        -234,
         // State 7
         0,
         // State 8
         -138,
         // State 9
-        -197,
+        -200,
         // State 10
         -125,
         // State 11
@@ -407754,7 +422750,7 @@
         // State 13
         0,
         // State 14
-        -198,
+        -201,
         // State 15
         0,
         // State 16
@@ -407770,7 +422766,7 @@
         // State 21
         0,
         // State 22
-        -199,
+        -202,
         // State 23
         0,
         // State 24
@@ -407778,7 +422774,7 @@
         // State 25
         0,
         // State 26
-        -200,
+        -203,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
@@ -407793,16 +422789,16 @@
                 2 => 14,
                 _ => 9,
             },
-            86 => match state {
+            88 => match state {
                 1 => 10,
                 4 => 21,
                 _ => 20,
             },
-            88 => match state {
+            90 => match state {
                 2 => 15,
                 _ => 11,
             },
-            90 => 2,
+            92 => 2,
             _ => 0,
         }
     }
@@ -409044,25 +424040,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -409074,14 +424070,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -409093,19 +424089,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -409117,109 +424113,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -409231,109 +424227,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -409345,43 +424341,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -409393,220 +424389,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 104,
+                }
+            }
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            230 => __state_machine::SimulatedReduce::Accept,
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
-            233 => {
+            233 => __state_machine::SimulatedReduce::Accept,
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -410373,12 +425393,7 @@
                 __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             230 => {
-                // __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));
+                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             231 => {
                 __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -410387,7 +425402,12 @@
                 __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             233 => {
-                __reduce233(__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));
             }
             234 => {
                 __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -410455,6 +425475,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -410548,6 +425580,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -410558,13 +425600,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -410648,6 +425690,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -410668,13 +425720,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -410818,66 +425870,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -410888,13 +425940,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -410908,43 +425960,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -410958,13 +426010,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -410998,13 +426050,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -411058,13 +426110,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -411105,10 +426157,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -411119,11 +426171,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -411134,11 +426186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -411149,13 +426201,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -411166,11 +426218,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -411181,10 +426233,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -411195,11 +426247,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -411210,10 +426262,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -411224,11 +426276,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -411239,10 +426291,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -411253,13 +426305,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -411270,13 +426322,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -411287,10 +426339,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -411301,14 +426353,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -411319,14 +426371,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -411337,10 +426389,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -411351,13 +426403,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -411368,13 +426420,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -411385,10 +426437,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -411399,14 +426451,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -411417,14 +426469,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -411435,10 +426487,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -411449,13 +426501,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -411466,10 +426518,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -411480,11 +426532,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -411495,13 +426547,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -411512,14 +426564,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -411530,13 +426582,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -411547,10 +426599,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -411561,11 +426613,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -411576,13 +426628,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -411593,14 +426645,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -411611,13 +426663,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -411628,10 +426680,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -411642,11 +426694,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -411657,13 +426709,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -411674,14 +426726,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -411692,13 +426744,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -411709,10 +426761,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -411723,11 +426775,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -411738,13 +426790,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -411755,14 +426807,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -411773,13 +426825,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -411790,10 +426842,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -411804,11 +426856,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -411819,13 +426871,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -411836,14 +426888,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -411854,13 +426906,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -411871,10 +426923,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -411885,11 +426937,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -411900,13 +426952,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -411917,14 +426969,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -411935,13 +426987,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -411952,10 +427004,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -411966,11 +427018,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -411981,13 +427033,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -411998,14 +427050,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -412016,10 +427068,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -412030,10 +427082,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -412044,14 +427096,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -412062,15 +427114,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -412081,14 +427133,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -412099,15 +427151,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -412118,11 +427170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -412133,11 +427185,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -412148,11 +427200,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -412163,11 +427215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -412178,11 +427230,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -412193,11 +427245,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -412208,11 +427260,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -412223,11 +427275,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -412238,11 +427290,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -412253,11 +427305,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -412268,11 +427320,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -412283,11 +427335,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -412298,11 +427350,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -412313,11 +427365,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -412328,11 +427380,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -412343,11 +427395,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -412358,14 +427410,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -412376,11 +427428,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -412391,10 +427443,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -412405,13 +427457,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -412422,11 +427474,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -412437,11 +427489,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -412452,10 +427504,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -412466,13 +427518,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -412483,11 +427535,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -412498,11 +427550,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -412513,10 +427565,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -412527,13 +427579,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -412544,11 +427596,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -412559,11 +427611,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -412574,10 +427626,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -412588,13 +427640,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -412605,11 +427657,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -412620,11 +427672,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -412635,10 +427687,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -412649,13 +427701,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -412666,11 +427718,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -412681,11 +427733,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -412696,10 +427748,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -412710,13 +427762,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -412727,11 +427779,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -412742,7 +427794,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -412753,7 +427805,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -412764,11 +427816,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -412779,10 +427831,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -412793,13 +427845,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -412810,11 +427862,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -412825,14 +427877,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -412843,11 +427895,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -412858,11 +427910,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -412873,14 +427925,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -412891,13 +427943,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -412908,13 +427960,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -412925,13 +427977,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -412942,11 +427994,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -412957,14 +428009,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -412975,11 +428027,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -412990,14 +428042,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -413008,11 +428060,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -413023,11 +428075,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -413038,10 +428090,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -413052,7 +428104,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -413060,7 +428112,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -413071,14 +428123,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -413089,11 +428141,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -413104,10 +428156,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -413118,7 +428170,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -413127,7 +428179,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -413138,7 +428190,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -413149,7 +428201,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -413160,7 +428212,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -413174,7 +428226,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -413185,7 +428237,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -413197,7 +428249,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -413208,7 +428260,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -413221,7 +428273,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -413232,7 +428284,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -413243,7 +428295,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -413254,7 +428306,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -413267,7 +428319,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -413278,7 +428330,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -413289,7 +428341,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -413300,7 +428352,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -413312,7 +428364,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -413323,7 +428375,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -413333,7 +428385,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -413344,11 +428396,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -413359,11 +428411,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -413374,10 +428426,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -413388,11 +428440,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -413403,7 +428455,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -413412,7 +428464,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -413423,7 +428475,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -413432,7 +428484,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -413443,14 +428495,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -413461,7 +428513,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -413471,7 +428523,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -413482,14 +428534,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -413500,7 +428552,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -413511,7 +428563,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -413522,7 +428574,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -413532,7 +428584,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -413543,9 +428595,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -413554,7 +428606,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -413565,9 +428617,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -413575,7 +428627,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -413586,11 +428638,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -413601,13 +428653,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -413618,11 +428670,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -413633,10 +428685,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -413647,11 +428699,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -413662,13 +428714,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -413679,11 +428731,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -413694,13 +428746,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -413711,7 +428763,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -413721,7 +428773,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -413732,7 +428784,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -413741,7 +428793,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -413752,11 +428804,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -413767,13 +428819,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -413782,13 +428836,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -413797,13 +428851,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -413812,15 +428866,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -413829,11 +428881,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -413844,15 +428896,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -413861,16 +428911,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -413879,11 +428928,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -413894,15 +428943,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -413911,13 +428960,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -413926,12 +428978,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -413940,13 +428993,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -413957,13 +429010,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -413972,13 +429025,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -413987,13 +429039,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -414002,13 +429056,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -414017,15 +429071,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -414034,15 +429086,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -414051,15 +429101,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -414068,15 +429116,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -414085,7 +429133,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -414097,62 +429196,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -414161,12 +429207,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -414175,17 +429227,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -414194,16 +429245,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -414212,16 +429260,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -414230,13 +429274,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -414245,12 +429293,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -414259,15 +429311,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -414277,13 +429329,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -414292,13 +429344,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -414307,13 +429358,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -414322,16 +429376,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -414340,13 +429391,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -414355,15 +429406,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -414372,17 +429421,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -414391,18 +429439,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -414411,13 +429454,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -414426,12 +429471,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -414440,13 +429490,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -414455,15 +429510,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -414472,15 +429525,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -414489,15 +429539,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -414506,12 +429554,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -414520,13 +429571,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -414535,13 +429588,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -414550,15 +429605,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -414567,12 +429619,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -414582,13 +429634,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -414597,13 +429649,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -414612,13 +429666,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -414627,13 +429681,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -414642,13 +429696,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -414657,13 +429711,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -414672,18 +429726,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414696,9 +429795,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414711,9 +429810,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414726,9 +429825,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414741,9 +429840,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414756,9 +429855,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414771,9 +429870,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414786,9 +429885,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414801,9 +429900,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414816,9 +429915,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414831,9 +429930,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414846,9 +429945,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414861,9 +429960,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414876,9 +429975,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414891,9 +429990,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414906,9 +430005,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414921,9 +430020,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414936,9 +430035,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414951,9 +430050,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -414966,53 +430065,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -415020,13 +430074,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -415035,13 +430089,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -415050,13 +430104,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -415065,13 +430119,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -415080,15 +430134,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415101,9 +430215,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415111,14 +430225,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415131,9 +430245,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415146,9 +430260,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415161,9 +430275,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415176,9 +430290,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415186,14 +430300,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415201,14 +430315,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415216,14 +430330,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -415231,12 +430345,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__FnParam::FnParamParser;
@@ -415306,22 +430420,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -415337,7 +430453,7 @@
         // State 5
         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, -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,
+        0, -169, -169, -169, -169, 18, -169, -169, -169, -169, -169, 0, 19, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 20, -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 7
         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
@@ -415357,7 +430473,7 @@
         // State 15
         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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 19, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, 20, -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 17
         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
@@ -415369,7 +430485,7 @@
         // State 21
         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, -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,
+        0, -169, -169, -169, -169, 18, -169, -169, -169, -169, -169, 0, 19, 0, -169, 0, 117, -169, -169, -169, 0, -169, -169, -169, 20, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 23
         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
@@ -415383,7 +430499,7 @@
         // 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, 64, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, -174, 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,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, -177, 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
         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
@@ -415397,7 +430513,7 @@
         // 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, 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, -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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, -169, 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
         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
@@ -415405,7 +430521,7 @@
         // 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, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 40
-        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, -173, 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,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, -176, 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, 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
@@ -415435,7 +430551,7 @@
         // State 54
         0, 0, 0, 144, 0, 0, 0, 145, 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, 79, 0, 0, 0, 0, 80, -188, 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, -188, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, -191, 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, -191, 0,
         // State 56
         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
@@ -415457,27 +430573,27 @@
         // State 65
         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, -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, -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 67
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, -220, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, -220, 0,
         // State 68
         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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, -193, -193, 0, 0, -193, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, -193, 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 70
-        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, -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 71
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 72
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 73
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, -215, -215, 0, 0, -215, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, -218, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, -218, 0,
         // State 74
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, -214, -214, 0, 0, -214, -214, -214, 0, -214, -214, -214, 0, -214, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, -214, 0,
+        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
         // State 75
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, -216, -216, 0, 0, -216, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, -219, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, -219, 0,
         // State 76
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 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
@@ -415513,7 +430629,7 @@
         // State 93
         -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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, -172, -172, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, -172, 0,
         // State 95
         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
@@ -415529,9 +430645,9 @@
         // State 101
         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, -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, -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 103
-        0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -175, -175, 0, 0, -175, 0, 0, 0, 0, -175, 0, 0, 0, -175, 0, 0, 0, -175, 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, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 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
@@ -415541,25 +430657,25 @@
         // State 107
         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, 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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 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 109
         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, -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, -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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, -173, -173, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, -173, 0,
         // State 112
         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, -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, -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 114
         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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, -192, -192, 0, 0, -192, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, -192, 0,
+        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 116
         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, -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, -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 118
         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
@@ -415567,17 +430683,17 @@
         // 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,
         // State 121
-        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, -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, -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, -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, -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, -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 124
         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, 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
-        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, -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 127
         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
@@ -415585,7 +430701,7 @@
         // 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,
+        0, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, -171, -171, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, -171, 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, 147, 0,
         // State 132
@@ -415599,25 +430715,25 @@
         // State 136
         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, 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, -218, -218, -218, 0, 0, -218, 0, 0, 0, 0, -218, 0, 0, 0, -218, 0, 0, 0, -218, 0,
+        0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
         // State 138
         -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, 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,
         // State 140
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, -197, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 55, 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 141
         0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 143
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 156, 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, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 145
         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, 0, 0, 0, 0, -99, 0,
         // State 146
-        0, 0, 0, 0, 0, 0, -187, 0, 0, -187, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 148
@@ -415631,19 +430747,19 @@
         // State 152
         0, 0, 0, -56, 0, 0, 0, -56, 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 153
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, -198, 0, -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, -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 154
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 155
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 156
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 157
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 159
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 160
         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 161
@@ -415655,13 +430771,13 @@
         // State 164
         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 165
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 166
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 167
         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 168
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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]
@@ -415790,7 +430906,7 @@
         // State 60
         0,
         // State 61
-        -232,
+        -235,
         // State 62
         0,
         // State 63
@@ -416087,22 +431203,22 @@
             63 => 103,
             65 => 104,
             69 => 26,
-            72 => match state {
+            74 => match state {
                 13 | 26 => 105,
                 25 => 119,
                 _ => 67,
             },
-            73 => match state {
+            75 => match state {
                 16 => 111,
                 _ => 94,
             },
-            74 => 16,
-            76 => 106,
-            77 => match state {
+            76 => 16,
+            78 => 106,
+            79 => match state {
                 26 => 124,
                 _ => 107,
             },
-            81 => match state {
+            83 => match state {
                 37 => 134,
                 45 => 148,
                 50 => 159,
@@ -416110,26 +431226,26 @@
                 59 => 167,
                 _ => 98,
             },
-            82 => match state {
+            84 => match state {
                 44 => 145,
                 _ => 133,
             },
-            84 => 68,
-            85 => 69,
-            86 => match state {
+            86 => 68,
+            87 => 69,
+            88 => match state {
                 47 => 149,
                 48 => 150,
                 53 => 161,
                 _ => 141,
             },
-            88 => match state {
+            90 => match state {
                 49 => 154,
                 _ => 142,
             },
-            90 => 49,
-            91 => 7,
-            92 => 70,
-            93 => 108,
+            92 => 49,
+            93 => 7,
+            94 => 70,
+            95 => 108,
             _ => 0,
         }
     }
@@ -417371,25 +432487,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -417401,14 +432517,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -417420,19 +432536,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -417444,109 +432560,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -417558,109 +432674,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -417672,43 +432788,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -417720,220 +432836,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 105,
+                }
+            }
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            231 => __state_machine::SimulatedReduce::Accept,
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
-            234 => {
+            234 => __state_machine::SimulatedReduce::Accept,
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -418703,12 +433843,7 @@
                 __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             231 => {
-                // __ForStmt = ForStmt => ActionFn(14);
-                let __sym0 = __pop_Variant36(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action14::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             232 => {
                 __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -418717,7 +433852,12 @@
                 __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __ForStmt = ForStmt => ActionFn(14);
+                let __sym0 = __pop_Variant36(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action14::<>(__sym0);
+                return Some(Ok(__nt));
             }
             235 => {
                 __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -418782,6 +433922,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -418875,6 +434027,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -418885,13 +434047,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -418975,6 +434137,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -418995,13 +434167,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -419145,66 +434317,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -419215,13 +434387,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -419235,43 +434407,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -419285,13 +434457,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -419325,13 +434497,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -419385,13 +434557,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -419432,10 +434604,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -419446,11 +434618,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -419461,11 +434633,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -419476,13 +434648,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -419493,11 +434665,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -419508,10 +434680,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -419522,11 +434694,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -419537,10 +434709,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -419551,11 +434723,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -419566,10 +434738,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -419580,13 +434752,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -419597,13 +434769,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -419614,10 +434786,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -419628,14 +434800,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -419646,14 +434818,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -419664,10 +434836,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -419678,13 +434850,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -419695,13 +434867,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -419712,10 +434884,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -419726,14 +434898,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -419744,14 +434916,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -419762,10 +434934,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -419776,13 +434948,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -419793,10 +434965,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -419807,11 +434979,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -419822,13 +434994,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -419839,14 +435011,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -419857,13 +435029,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -419874,10 +435046,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -419888,11 +435060,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -419903,13 +435075,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -419920,14 +435092,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -419938,13 +435110,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -419955,10 +435127,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -419969,11 +435141,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -419984,13 +435156,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -420001,14 +435173,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -420019,13 +435191,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -420036,10 +435208,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -420050,11 +435222,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -420065,13 +435237,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -420082,14 +435254,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -420100,13 +435272,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -420117,10 +435289,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -420131,11 +435303,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -420146,13 +435318,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -420163,14 +435335,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -420181,13 +435353,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -420198,10 +435370,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -420212,11 +435384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -420227,13 +435399,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -420244,14 +435416,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -420262,13 +435434,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -420279,10 +435451,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -420293,11 +435465,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -420308,13 +435480,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -420325,14 +435497,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -420343,10 +435515,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -420357,10 +435529,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -420371,14 +435543,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -420389,15 +435561,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -420408,14 +435580,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -420426,15 +435598,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -420445,11 +435617,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -420460,11 +435632,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -420475,11 +435647,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -420490,11 +435662,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -420505,11 +435677,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -420520,11 +435692,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -420535,11 +435707,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -420550,11 +435722,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -420565,11 +435737,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -420580,11 +435752,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -420595,11 +435767,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -420610,11 +435782,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -420625,11 +435797,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -420640,11 +435812,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -420655,11 +435827,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -420670,11 +435842,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -420685,14 +435857,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -420703,11 +435875,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -420718,10 +435890,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -420732,13 +435904,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -420749,11 +435921,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -420764,11 +435936,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -420779,10 +435951,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -420793,13 +435965,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -420810,11 +435982,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -420825,11 +435997,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -420840,10 +436012,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -420854,13 +436026,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -420871,11 +436043,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -420886,11 +436058,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -420901,10 +436073,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -420915,13 +436087,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -420932,11 +436104,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -420947,11 +436119,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -420962,10 +436134,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -420976,13 +436148,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -420993,11 +436165,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -421008,11 +436180,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -421023,10 +436195,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -421037,13 +436209,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -421054,11 +436226,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -421069,7 +436241,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -421080,7 +436252,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -421091,11 +436263,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -421106,10 +436278,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -421120,13 +436292,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -421137,11 +436309,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -421152,14 +436324,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -421170,11 +436342,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -421185,11 +436357,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -421200,14 +436372,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -421218,13 +436390,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -421235,13 +436407,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -421252,13 +436424,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -421269,11 +436441,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -421284,14 +436456,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -421302,11 +436474,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -421317,14 +436489,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -421335,11 +436507,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -421350,11 +436522,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -421365,10 +436537,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -421379,7 +436551,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -421387,7 +436559,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -421398,14 +436570,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -421416,11 +436588,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -421431,10 +436603,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -421445,7 +436617,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -421454,7 +436626,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -421465,7 +436637,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -421476,7 +436648,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -421487,7 +436659,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -421501,7 +436673,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -421512,7 +436684,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -421524,7 +436696,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -421535,7 +436707,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -421548,7 +436720,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -421559,7 +436731,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -421570,7 +436742,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -421581,7 +436753,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -421594,7 +436766,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -421605,7 +436777,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -421616,7 +436788,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -421627,7 +436799,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -421639,7 +436811,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -421650,7 +436822,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -421660,7 +436832,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -421671,11 +436843,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -421686,11 +436858,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -421701,10 +436873,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -421715,11 +436887,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -421730,7 +436902,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -421739,7 +436911,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -421750,7 +436922,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -421759,7 +436931,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -421770,14 +436942,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -421788,7 +436960,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -421798,7 +436970,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -421809,14 +436981,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -421827,7 +436999,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -421838,7 +437010,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -421849,7 +437021,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -421859,7 +437031,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -421870,9 +437042,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -421881,7 +437053,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -421892,9 +437064,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -421902,7 +437074,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -421913,11 +437085,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -421928,13 +437100,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -421945,11 +437117,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -421960,10 +437132,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -421974,11 +437146,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -421989,13 +437161,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -422006,11 +437178,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -422021,13 +437193,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -422038,7 +437210,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -422048,7 +437220,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -422059,7 +437231,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -422068,7 +437240,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -422079,11 +437251,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -422094,13 +437266,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -422109,13 +437283,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -422124,13 +437298,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -422139,15 +437313,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -422156,11 +437328,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -422171,15 +437343,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -422188,16 +437358,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -422206,11 +437375,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -422221,15 +437390,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -422238,13 +437407,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -422253,12 +437425,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -422267,13 +437440,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -422284,13 +437457,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -422299,13 +437472,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -422314,13 +437486,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -422329,13 +437503,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -422344,15 +437518,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -422361,15 +437533,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -422378,15 +437548,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -422395,15 +437563,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -422412,7 +437580,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -422424,62 +437643,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -422488,12 +437654,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -422502,17 +437674,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -422521,16 +437692,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -422539,16 +437707,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -422557,13 +437721,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -422572,12 +437740,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -422586,15 +437758,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -422604,13 +437776,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -422619,13 +437791,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -422634,13 +437805,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -422649,16 +437823,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -422667,13 +437838,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -422682,15 +437853,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -422699,17 +437868,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -422718,18 +437886,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -422738,13 +437901,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -422753,12 +437918,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -422767,13 +437937,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -422782,15 +437957,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -422799,15 +437972,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -422816,15 +437986,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -422833,12 +438001,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -422847,13 +438018,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -422862,13 +438035,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -422877,15 +438052,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -422894,12 +438066,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -422909,13 +438081,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -422924,13 +438096,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -422939,13 +438113,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -422954,13 +438128,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -422969,13 +438143,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -422984,13 +438158,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -422999,18 +438173,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423023,9 +438242,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423038,9 +438257,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423053,9 +438272,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423068,9 +438287,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423083,9 +438302,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423098,9 +438317,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423113,9 +438332,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423128,9 +438347,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423143,9 +438362,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423158,9 +438377,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423173,9 +438392,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423188,9 +438407,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423203,9 +438422,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423218,9 +438437,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423233,9 +438452,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423248,9 +438467,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423263,9 +438482,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423278,9 +438497,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423293,53 +438512,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -423347,13 +438521,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -423362,13 +438536,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -423377,13 +438551,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -423392,13 +438566,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -423407,15 +438581,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423428,9 +438662,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423438,14 +438672,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423458,9 +438692,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423473,9 +438707,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423488,9 +438722,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423503,9 +438737,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423513,14 +438747,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423528,14 +438762,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423543,14 +438777,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -423558,12 +438792,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__ForStmt::ForStmtParser;
@@ -423633,22 +438867,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -423692,7 +438928,7 @@
         // State 19
         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, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
-        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,
+        0, -169, -169, -169, -169, 34, -169, -169, -169, -169, -169, 0, 35, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 36, -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 21
         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, 23, 88, 24, 0, 0, 25, 0, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 133, 0,
         // State 22
@@ -423702,7 +438938,7 @@
         // 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, 88, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 25
-        143, 0, 0, 42, 0, 43, 0, 44, 0, 0, 144, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 88, 0, 0, 146, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 148,
+        143, 0, 0, 42, 0, 43, 0, 44, 0, 0, 144, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 88, 0, 0, 146, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 148,
         // State 26
         143, 0, 0, 42, 0, 43, 0, 44, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 88, 0, 0, 146, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 148,
         // State 27
@@ -423714,9 +438950,9 @@
         // 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, -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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, -169, 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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 35, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, 36, -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 33
         143, 0, 0, 42, 0, 43, -82, 44, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 88, 0, 0, 146, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 148,
         // State 34
@@ -423742,7 +438978,7 @@
         // 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, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        0, 0, 0, 160, 0, 0, 0, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 0, 0, 163, 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, 160, 0, 0, 0, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 163, 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,
         // State 46
         0, 0, 0, 160, 0, 0, 0, 0, 161, 0, 162, 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, 0, 0, 0, 0, 0, 0, 0, 0, 15, 164, 0, 0, 0,
         // State 47
@@ -423764,7 +439000,7 @@
         // State 55
         0, 0, 0, 160, 0, 0, 0, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 163, 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,
         // State 56
-        0, -166, -166, -166, -166, 34, -166, -166, -166, -166, -166, 0, 35, 0, -166, 0, 191, -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,
+        0, -169, -169, -169, -169, 34, -169, -169, -169, -169, -169, 0, 35, 0, -169, 0, 191, -169, -169, -169, 0, -169, -169, -169, 36, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 57
         143, 0, 0, 42, 0, 43, 0, 44, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 88, 0, 0, 146, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 148,
         // State 58
@@ -423814,7 +439050,7 @@
         // State 80
         143, 0, 0, 42, 0, 43, 0, 44, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 88, 0, 0, 146, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 148,
         // State 81
-        0, 0, 0, 160, 0, 0, 0, 0, 161, -188, 162, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, -188, 0,
+        0, 0, 0, 160, 0, 0, 0, 0, 161, -191, 162, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, -191, 0,
         // State 82
         0, 0, 0, 160, 0, 0, 0, 0, 161, 0, 162, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 163, 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,
         // State 83
@@ -423854,13 +439090,13 @@
         // State 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,
         // State 101
-        0, 0, 0, 0, 0, 0, -197, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, -197, 0, -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, -197, 0, 0, 0, 0,
+        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,
         // State 102
         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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 104
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 121, 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, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
@@ -423872,9 +439108,9 @@
         // State 109
         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 110
-        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, -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 111
-        0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -175, -175, 0, 0, -175, 0, 0, 0, 0, -175, 0, 0, 0, -175, 0, 0, 0, -175, 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, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 112
         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, 0, 0, 0, 0, 0,
         // State 113
@@ -423884,19 +439120,19 @@
         // State 115
         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 116
-        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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 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 117
         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 118
-        0, 0, 0, 0, 0, 0, -198, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, -198, 0, -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, -198, 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 119
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 120
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 121
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 122
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 0, 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
@@ -423906,19 +439142,19 @@
         // State 126
         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 127
-        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, -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 128
-        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, -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 129
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, -172, -172, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, -172, 0,
         // State 130
-        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, -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 131
         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 132
         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 133
-        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, -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 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, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 135
@@ -423926,27 +439162,27 @@
         // State 136
         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 137
-        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, -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 138
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, -220, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, -220, 0,
         // State 139
         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 140
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, -193, -193, 0, 0, -193, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, -193, 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 141
-        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, -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 142
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 143
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 144
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, -215, -215, 0, 0, -215, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, -218, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, -218, 0,
         // State 145
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, -214, -214, 0, 0, -214, -214, -214, 0, -214, -214, -214, 0, -214, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, -214, 0,
+        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
         // State 146
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, -216, -216, 0, 0, -216, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, -219, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, -219, 0,
         // State 147
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 148
         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 149
@@ -423958,11 +439194,11 @@
         // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 153
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, -173, -173, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, -173, 0,
         // State 154
         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, 0, 0, 0, 0, 0,
         // State 155
-        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, -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 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0,
         // State 157
@@ -424012,11 +439248,11 @@
         // State 179
         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 180
-        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, -218, -218, -218, 0, 0, -218, 0, 0, 0, 0, -218, 0, 0, 0, -218, 0, 0, 0, -218, 0,
+        0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
         // State 181
         0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 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 182
-        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 183
         0, 0, 0, -56, 0, 0, 0, -56, 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 184
@@ -424030,7 +439266,7 @@
         // State 188
         -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 189
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, -171, -171, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, -171, 0,
         // State 190
         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 191
@@ -424038,15 +439274,15 @@
         // State 192
         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 193
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, -192, -192, 0, 0, -192, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, -192, 0,
+        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 194
-        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, -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 195
         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 196
         0, 0, 0, -57, 0, 0, 0, -57, 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 197
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 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, 0, 0, 0, 0,
         // State 199
@@ -424068,7 +439304,7 @@
         // State 207
         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, -99, 0,
         // State 208
-        0, 0, 0, 0, 0, 0, -187, 0, 0, -187, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 0, 0, -190, 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, -190, 0,
         // State 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 210
@@ -424078,7 +439314,7 @@
         // 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, 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 213
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 214
         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 215
@@ -424255,7 +439491,7 @@
         // State 82
         0,
         // State 83
-        -233,
+        -236,
         // State 84
         0,
         // State 85
@@ -424624,22 +439860,22 @@
             63 => 111,
             65 => 112,
             69 => 21,
-            72 => match state {
+            74 => match state {
                 14 | 21 => 113,
                 19 => 125,
                 _ => 138,
             },
-            73 => match state {
+            75 => match state {
                 32 => 153,
                 _ => 129,
             },
-            74 => 32,
-            76 => 114,
-            77 => match state {
+            76 => 32,
+            78 => 114,
+            79 => match state {
                 21 => 131,
                 _ => 115,
             },
-            81 => match state {
+            83 => match state {
                 42 => 177,
                 51 => 186,
                 76 => 210,
@@ -424647,13 +439883,13 @@
                 80 => 215,
                 _ => 157,
             },
-            82 => match state {
+            84 => match state {
                 74 => 207,
                 _ => 202,
             },
-            84 => 139,
-            85 => 140,
-            86 => match state {
+            86 => 139,
+            87 => 140,
+            88 => match state {
                 13 => 18,
                 17 => 30,
                 29 => 50,
@@ -424664,14 +439900,14 @@
                 72 => 205,
                 _ => 150,
             },
-            88 => match state {
+            90 => match state {
                 15 => 119,
                 _ => 103,
             },
-            90 => 15,
-            91 => 40,
-            92 => 141,
-            93 => 116,
+            92 => 15,
+            93 => 40,
+            94 => 141,
+            95 => 116,
             _ => 0,
         }
     }
@@ -425913,25 +441149,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -425943,14 +441179,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -425962,19 +441198,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -425986,109 +441222,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -426100,109 +441336,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -426214,43 +441450,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -426262,220 +441498,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 106,
+                }
+            }
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            232 => __state_machine::SimulatedReduce::Accept,
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
-            235 => {
+            235 => __state_machine::SimulatedReduce::Accept,
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -427248,12 +442508,7 @@
                 __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             232 => {
-                // __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));
+                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             233 => {
                 __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -427262,7 +442517,12 @@
                 __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             235 => {
-                __reduce235(__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));
             }
             236 => {
                 __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -427324,6 +442584,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -427417,6 +442689,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -427427,13 +442709,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -427517,6 +442799,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -427537,13 +442829,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -427687,66 +442979,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -427757,13 +443049,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -427777,43 +443069,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -427827,13 +443119,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -427867,13 +443159,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -427927,13 +443219,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -427974,10 +443266,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -427988,11 +443280,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -428003,11 +443295,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -428018,13 +443310,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -428035,11 +443327,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -428050,10 +443342,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -428064,11 +443356,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -428079,10 +443371,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -428093,11 +443385,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -428108,10 +443400,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -428122,13 +443414,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -428139,13 +443431,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -428156,10 +443448,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -428170,14 +443462,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -428188,14 +443480,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -428206,10 +443498,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -428220,13 +443512,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -428237,13 +443529,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -428254,10 +443546,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -428268,14 +443560,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -428286,14 +443578,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -428304,10 +443596,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -428318,13 +443610,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -428335,10 +443627,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -428349,11 +443641,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -428364,13 +443656,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -428381,14 +443673,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -428399,13 +443691,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -428416,10 +443708,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -428430,11 +443722,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -428445,13 +443737,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -428462,14 +443754,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -428480,13 +443772,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -428497,10 +443789,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -428511,11 +443803,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -428526,13 +443818,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -428543,14 +443835,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -428561,13 +443853,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -428578,10 +443870,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -428592,11 +443884,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -428607,13 +443899,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -428624,14 +443916,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -428642,13 +443934,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -428659,10 +443951,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -428673,11 +443965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -428688,13 +443980,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -428705,14 +443997,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -428723,13 +444015,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -428740,10 +444032,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -428754,11 +444046,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -428769,13 +444061,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -428786,14 +444078,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -428804,13 +444096,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -428821,10 +444113,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -428835,11 +444127,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -428850,13 +444142,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -428867,14 +444159,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -428885,10 +444177,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -428899,10 +444191,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -428913,14 +444205,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -428931,15 +444223,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -428950,14 +444242,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -428968,15 +444260,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -428987,11 +444279,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -429002,11 +444294,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -429017,11 +444309,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -429032,11 +444324,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -429047,11 +444339,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -429062,11 +444354,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -429077,11 +444369,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -429092,11 +444384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -429107,11 +444399,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -429122,11 +444414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -429137,11 +444429,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -429152,11 +444444,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -429167,11 +444459,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -429182,11 +444474,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -429197,11 +444489,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -429212,11 +444504,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -429227,14 +444519,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -429245,11 +444537,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -429260,10 +444552,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -429274,13 +444566,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -429291,11 +444583,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -429306,11 +444598,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -429321,10 +444613,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -429335,13 +444627,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -429352,11 +444644,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -429367,11 +444659,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -429382,10 +444674,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -429396,13 +444688,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -429413,11 +444705,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -429428,11 +444720,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -429443,10 +444735,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -429457,13 +444749,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -429474,11 +444766,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -429489,11 +444781,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -429504,10 +444796,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -429518,13 +444810,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -429535,11 +444827,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -429550,11 +444842,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -429565,10 +444857,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -429579,13 +444871,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -429596,11 +444888,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -429611,7 +444903,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -429622,7 +444914,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -429633,11 +444925,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -429648,10 +444940,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -429662,13 +444954,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -429679,11 +444971,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -429694,14 +444986,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -429712,11 +445004,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -429727,11 +445019,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -429742,14 +445034,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -429760,13 +445052,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -429777,13 +445069,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -429794,13 +445086,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -429811,11 +445103,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -429826,14 +445118,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -429844,11 +445136,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -429859,14 +445151,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -429877,11 +445169,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -429892,11 +445184,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -429907,10 +445199,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -429921,7 +445213,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -429929,7 +445221,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -429940,14 +445232,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -429958,11 +445250,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -429973,10 +445265,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -429987,7 +445279,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -429996,7 +445288,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -430007,7 +445299,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -430018,7 +445310,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -430029,7 +445321,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -430043,7 +445335,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -430054,7 +445346,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -430066,7 +445358,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -430077,7 +445369,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -430090,7 +445382,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -430101,7 +445393,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -430112,7 +445404,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -430123,7 +445415,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -430136,7 +445428,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -430147,7 +445439,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -430158,7 +445450,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -430169,7 +445461,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -430181,7 +445473,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -430192,7 +445484,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -430202,7 +445494,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -430213,11 +445505,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -430228,11 +445520,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -430243,10 +445535,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -430257,11 +445549,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -430272,7 +445564,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -430281,7 +445573,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -430292,7 +445584,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -430301,7 +445593,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -430312,14 +445604,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -430330,7 +445622,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -430340,7 +445632,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -430351,14 +445643,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -430369,7 +445661,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -430380,7 +445672,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -430391,7 +445683,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -430401,7 +445693,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -430412,9 +445704,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -430423,7 +445715,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -430434,9 +445726,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -430444,7 +445736,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -430455,11 +445747,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -430470,13 +445762,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -430487,11 +445779,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -430502,10 +445794,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -430516,11 +445808,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -430531,13 +445823,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -430548,11 +445840,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -430563,13 +445855,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -430580,7 +445872,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -430590,7 +445882,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -430601,7 +445893,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -430610,7 +445902,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -430621,11 +445913,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -430636,13 +445928,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -430651,13 +445945,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -430666,13 +445960,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -430681,15 +445975,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -430698,11 +445990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -430713,15 +446005,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -430730,16 +446020,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -430748,11 +446037,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -430763,15 +446052,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -430780,13 +446069,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -430795,12 +446087,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -430809,13 +446102,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -430826,13 +446119,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -430841,13 +446134,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -430856,13 +446148,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -430871,13 +446165,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -430886,15 +446180,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -430903,15 +446195,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -430920,15 +446210,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -430937,15 +446225,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -430954,7 +446242,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -430966,62 +446305,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -431030,12 +446316,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -431044,17 +446336,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -431063,16 +446354,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -431081,16 +446369,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -431099,13 +446383,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -431114,12 +446402,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -431128,15 +446420,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -431146,13 +446438,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -431161,13 +446453,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -431176,13 +446467,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -431191,16 +446485,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -431209,13 +446500,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -431224,15 +446515,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -431241,17 +446530,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -431260,18 +446548,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -431280,13 +446563,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -431295,12 +446580,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -431309,13 +446599,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -431324,15 +446619,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -431341,15 +446634,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -431358,15 +446648,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -431375,12 +446663,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -431389,13 +446680,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -431404,13 +446697,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -431419,15 +446714,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -431436,12 +446728,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -431451,13 +446743,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -431466,13 +446758,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -431481,13 +446775,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -431496,13 +446790,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -431511,13 +446805,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -431526,13 +446820,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -431541,18 +446835,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431565,9 +446904,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431580,9 +446919,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431595,9 +446934,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431610,9 +446949,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431625,9 +446964,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431640,9 +446979,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431655,9 +446994,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431670,9 +447009,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431685,9 +447024,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431700,9 +447039,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431715,9 +447054,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431730,9 +447069,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431745,9 +447084,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431760,9 +447099,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431775,9 +447114,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431790,9 +447129,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431805,9 +447144,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431820,9 +447159,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431835,53 +447174,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -431889,13 +447183,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -431904,13 +447198,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -431919,13 +447213,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -431934,13 +447228,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -431949,15 +447243,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431970,9 +447324,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -431980,14 +447334,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -432000,9 +447354,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -432015,9 +447369,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -432030,9 +447384,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -432045,9 +447399,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -432055,14 +447409,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -432070,14 +447424,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -432085,14 +447439,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -432100,12 +447454,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Function::FunctionParser;
@@ -432175,22 +447529,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -432207,7 +447563,7 @@
         // State 0
         0,
         // State 1
-        -234,
+        -237,
         // State 2
         -138,
     ];
@@ -433455,25 +448811,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -433485,14 +448841,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -433504,19 +448860,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -433528,109 +448884,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -433642,109 +448998,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -433756,43 +449112,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -433804,220 +449160,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 107,
+                }
+            }
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            233 => __state_machine::SimulatedReduce::Accept,
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
-            236 => {
+            236 => __state_machine::SimulatedReduce::Accept,
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -434793,12 +450173,7 @@
                 __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             233 => {
-                // __Ident = Ident => ActionFn(0);
-                let __sym0 = __pop_Variant18(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action0::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             234 => {
                 __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -434807,7 +450182,12 @@
                 __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Ident = Ident => ActionFn(0);
+                let __sym0 = __pop_Variant18(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action0::<>(__sym0);
+                return Some(Ok(__nt));
             }
             237 => {
                 __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -434866,6 +450246,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -434959,6 +450351,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -434969,13 +450371,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -435059,6 +450461,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -435079,13 +450491,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -435229,66 +450641,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -435299,13 +450711,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -435319,43 +450731,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -435369,13 +450781,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -435409,13 +450821,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -435469,13 +450881,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -435516,10 +450928,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -435530,11 +450942,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -435545,11 +450957,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -435560,13 +450972,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -435577,11 +450989,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -435592,10 +451004,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -435606,11 +451018,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -435621,10 +451033,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -435635,11 +451047,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -435650,10 +451062,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -435664,13 +451076,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -435681,13 +451093,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -435698,10 +451110,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -435712,14 +451124,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -435730,14 +451142,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -435748,10 +451160,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -435762,13 +451174,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -435779,13 +451191,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -435796,10 +451208,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -435810,14 +451222,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -435828,14 +451240,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -435846,10 +451258,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -435860,13 +451272,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -435877,10 +451289,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -435891,11 +451303,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -435906,13 +451318,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -435923,14 +451335,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -435941,13 +451353,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -435958,10 +451370,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -435972,11 +451384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -435987,13 +451399,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -436004,14 +451416,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -436022,13 +451434,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -436039,10 +451451,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -436053,11 +451465,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -436068,13 +451480,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -436085,14 +451497,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -436103,13 +451515,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -436120,10 +451532,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -436134,11 +451546,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -436149,13 +451561,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -436166,14 +451578,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -436184,13 +451596,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -436201,10 +451613,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -436215,11 +451627,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -436230,13 +451642,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -436247,14 +451659,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -436265,13 +451677,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -436282,10 +451694,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -436296,11 +451708,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -436311,13 +451723,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -436328,14 +451740,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -436346,13 +451758,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -436363,10 +451775,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -436377,11 +451789,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -436392,13 +451804,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -436409,14 +451821,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -436427,10 +451839,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -436441,10 +451853,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -436455,14 +451867,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -436473,15 +451885,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -436492,14 +451904,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -436510,15 +451922,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -436529,11 +451941,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -436544,11 +451956,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -436559,11 +451971,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -436574,11 +451986,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -436589,11 +452001,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -436604,11 +452016,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -436619,11 +452031,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -436634,11 +452046,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -436649,11 +452061,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -436664,11 +452076,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -436679,11 +452091,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -436694,11 +452106,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -436709,11 +452121,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -436724,11 +452136,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -436739,11 +452151,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -436754,11 +452166,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -436769,14 +452181,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -436787,11 +452199,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -436802,10 +452214,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -436816,13 +452228,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -436833,11 +452245,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -436848,11 +452260,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -436863,10 +452275,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -436877,13 +452289,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -436894,11 +452306,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -436909,11 +452321,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -436924,10 +452336,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -436938,13 +452350,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -436955,11 +452367,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -436970,11 +452382,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -436985,10 +452397,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -436999,13 +452411,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -437016,11 +452428,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -437031,11 +452443,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -437046,10 +452458,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -437060,13 +452472,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -437077,11 +452489,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -437092,11 +452504,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -437107,10 +452519,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -437121,13 +452533,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -437138,11 +452550,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -437153,7 +452565,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -437164,7 +452576,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -437175,11 +452587,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -437190,10 +452602,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -437204,13 +452616,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -437221,11 +452633,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -437236,14 +452648,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -437254,11 +452666,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -437269,11 +452681,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -437284,14 +452696,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -437302,13 +452714,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -437319,13 +452731,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -437336,13 +452748,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -437353,11 +452765,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -437368,14 +452780,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -437386,11 +452798,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -437401,14 +452813,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -437419,11 +452831,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -437434,11 +452846,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -437449,10 +452861,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -437463,7 +452875,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -437471,7 +452883,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -437482,14 +452894,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -437500,11 +452912,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -437515,10 +452927,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -437529,7 +452941,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -437538,7 +452950,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -437549,7 +452961,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -437560,7 +452972,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -437571,7 +452983,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -437585,7 +452997,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -437596,7 +453008,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -437608,7 +453020,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -437619,7 +453031,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -437632,7 +453044,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -437643,7 +453055,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -437654,7 +453066,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -437665,7 +453077,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -437678,7 +453090,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -437689,7 +453101,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -437700,7 +453112,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -437711,7 +453123,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -437723,7 +453135,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -437734,7 +453146,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -437744,7 +453156,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -437755,11 +453167,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -437770,11 +453182,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -437785,10 +453197,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -437799,11 +453211,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -437814,7 +453226,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -437823,7 +453235,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -437834,7 +453246,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -437843,7 +453255,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -437854,14 +453266,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -437872,7 +453284,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -437882,7 +453294,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -437893,14 +453305,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -437911,7 +453323,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -437922,7 +453334,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -437933,7 +453345,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -437943,7 +453355,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -437954,9 +453366,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -437965,7 +453377,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -437976,9 +453388,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -437986,7 +453398,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -437997,11 +453409,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -438012,13 +453424,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -438029,11 +453441,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -438044,10 +453456,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -438058,11 +453470,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -438073,13 +453485,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -438090,11 +453502,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -438105,13 +453517,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -438122,7 +453534,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -438132,7 +453544,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -438143,7 +453555,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -438152,7 +453564,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -438163,11 +453575,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -438178,13 +453590,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -438193,13 +453607,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -438208,13 +453622,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -438223,15 +453637,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -438240,11 +453652,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -438255,15 +453667,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -438272,16 +453682,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -438290,11 +453699,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -438305,15 +453714,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -438322,13 +453731,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -438337,12 +453749,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -438351,13 +453764,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -438368,13 +453781,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -438383,13 +453796,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -438398,13 +453810,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -438413,13 +453827,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -438428,15 +453842,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -438445,15 +453857,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -438462,15 +453872,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -438479,15 +453887,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -438496,7 +453904,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -438508,62 +453967,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -438572,12 +453978,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -438586,17 +453998,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -438605,16 +454016,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -438623,16 +454031,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -438641,13 +454045,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -438656,12 +454064,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -438670,15 +454082,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -438688,13 +454100,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -438703,13 +454115,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -438718,13 +454129,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -438733,16 +454147,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -438751,13 +454162,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -438766,15 +454177,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -438783,17 +454192,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -438802,18 +454210,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -438822,13 +454225,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -438837,12 +454242,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -438851,13 +454261,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -438866,15 +454281,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -438883,15 +454296,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -438900,15 +454310,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -438917,12 +454325,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -438931,13 +454342,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -438946,13 +454359,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -438961,15 +454376,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -438978,12 +454390,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -438993,13 +454405,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -439008,13 +454420,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -439023,13 +454437,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -439038,13 +454452,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -439053,13 +454467,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -439068,13 +454482,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -439083,18 +454497,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439107,9 +454566,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439122,9 +454581,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439137,9 +454596,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439152,9 +454611,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439167,9 +454626,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439182,9 +454641,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439197,9 +454656,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439212,9 +454671,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439227,9 +454686,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439242,9 +454701,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439257,9 +454716,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439272,9 +454731,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439287,9 +454746,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439302,9 +454761,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439317,9 +454776,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439332,9 +454791,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439347,9 +454806,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439362,9 +454821,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439377,53 +454836,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -439431,13 +454845,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -439446,13 +454860,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -439461,13 +454875,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -439476,13 +454890,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -439491,15 +454905,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439512,9 +454986,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439522,14 +454996,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439542,9 +455016,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439557,9 +455031,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439572,9 +455046,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439587,9 +455061,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439597,14 +455071,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439612,14 +455086,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439627,14 +455101,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -439642,12 +455116,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Ident::IdentParser;
@@ -439717,22 +455191,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -439758,13 +455234,13 @@
         // State 10
         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 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 5, 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,
         // State 12
         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 13
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 14
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 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, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
@@ -439774,25 +455250,25 @@
         // State 18
         0, 0, 0, -56, 0, 0, 0, -56, 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, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, -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, -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 20
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
         0, 0, 0, -57, 0, 0, 0, -57, 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 25
         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,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 27
         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,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -439813,7 +455289,7 @@
         // State 6
         -141,
         // State 7
-        -235,
+        -238,
         // State 8
         -138,
         // State 9
@@ -439871,15 +455347,15 @@
                 _ => 11,
             },
             62 => 7,
-            86 => match state {
+            88 => match state {
                 2 => 16,
                 _ => 12,
             },
-            88 => match state {
+            90 => match state {
                 3 => 20,
                 _ => 13,
             },
-            90 => 3,
+            92 => 3,
             _ => 0,
         }
     }
@@ -441121,25 +456597,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -441151,14 +456627,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -441170,19 +456646,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -441194,109 +456670,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -441308,109 +456784,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -441422,43 +456898,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -441470,220 +456946,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 108,
+                }
+            }
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            234 => __state_machine::SimulatedReduce::Accept,
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
-            237 => {
+            237 => __state_machine::SimulatedReduce::Accept,
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -442462,12 +457962,7 @@
                 __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             234 => {
-                // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
-                let __sym0 = __pop_Variant6(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action3::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             235 => {
                 __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -442476,7 +457971,12 @@
                 __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
+                let __sym0 = __pop_Variant6(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action3::<>(__sym0);
+                return Some(Ok(__nt));
             }
             238 => {
                 __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -442532,6 +458032,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -442625,6 +458137,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -442635,13 +458157,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -442725,6 +458247,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -442745,13 +458277,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -442895,66 +458427,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -442965,13 +458497,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -442985,43 +458517,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -443035,13 +458567,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -443075,13 +458607,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -443135,13 +458667,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -443182,10 +458714,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -443196,11 +458728,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -443211,11 +458743,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -443226,13 +458758,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -443243,11 +458775,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -443258,10 +458790,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -443272,11 +458804,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -443287,10 +458819,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -443301,11 +458833,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -443316,10 +458848,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -443330,13 +458862,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -443347,13 +458879,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -443364,10 +458896,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -443378,14 +458910,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -443396,14 +458928,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -443414,10 +458946,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -443428,13 +458960,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -443445,13 +458977,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -443462,10 +458994,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -443476,14 +459008,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -443494,14 +459026,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -443512,10 +459044,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -443526,13 +459058,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -443543,10 +459075,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -443557,11 +459089,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -443572,13 +459104,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -443589,14 +459121,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -443607,13 +459139,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -443624,10 +459156,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -443638,11 +459170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -443653,13 +459185,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -443670,14 +459202,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -443688,13 +459220,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -443705,10 +459237,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -443719,11 +459251,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -443734,13 +459266,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -443751,14 +459283,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -443769,13 +459301,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -443786,10 +459318,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -443800,11 +459332,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -443815,13 +459347,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -443832,14 +459364,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -443850,13 +459382,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -443867,10 +459399,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -443881,11 +459413,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -443896,13 +459428,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -443913,14 +459445,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -443931,13 +459463,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -443948,10 +459480,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -443962,11 +459494,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -443977,13 +459509,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -443994,14 +459526,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -444012,13 +459544,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -444029,10 +459561,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -444043,11 +459575,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -444058,13 +459590,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -444075,14 +459607,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -444093,10 +459625,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -444107,10 +459639,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -444121,14 +459653,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -444139,15 +459671,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -444158,14 +459690,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -444176,15 +459708,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -444195,11 +459727,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -444210,11 +459742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -444225,11 +459757,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -444240,11 +459772,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -444255,11 +459787,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -444270,11 +459802,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -444285,11 +459817,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -444300,11 +459832,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -444315,11 +459847,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -444330,11 +459862,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -444345,11 +459877,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -444360,11 +459892,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -444375,11 +459907,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -444390,11 +459922,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -444405,11 +459937,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -444420,11 +459952,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -444435,14 +459967,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -444453,11 +459985,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -444468,10 +460000,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -444482,13 +460014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -444499,11 +460031,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -444514,11 +460046,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -444529,10 +460061,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -444543,13 +460075,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -444560,11 +460092,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -444575,11 +460107,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -444590,10 +460122,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -444604,13 +460136,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -444621,11 +460153,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -444636,11 +460168,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -444651,10 +460183,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -444665,13 +460197,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -444682,11 +460214,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -444697,11 +460229,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -444712,10 +460244,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -444726,13 +460258,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -444743,11 +460275,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -444758,11 +460290,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -444773,10 +460305,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -444787,13 +460319,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -444804,11 +460336,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -444819,7 +460351,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -444830,7 +460362,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -444841,11 +460373,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -444856,10 +460388,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -444870,13 +460402,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -444887,11 +460419,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -444902,14 +460434,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -444920,11 +460452,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -444935,11 +460467,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -444950,14 +460482,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -444968,13 +460500,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -444985,13 +460517,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -445002,13 +460534,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -445019,11 +460551,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -445034,14 +460566,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -445052,11 +460584,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -445067,14 +460599,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -445085,11 +460617,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -445100,11 +460632,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -445115,10 +460647,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -445129,7 +460661,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -445137,7 +460669,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -445148,14 +460680,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -445166,11 +460698,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -445181,10 +460713,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -445195,7 +460727,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -445204,7 +460736,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -445215,7 +460747,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -445226,7 +460758,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -445237,7 +460769,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -445251,7 +460783,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -445262,7 +460794,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -445274,7 +460806,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -445285,7 +460817,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -445298,7 +460830,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -445309,7 +460841,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -445320,7 +460852,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -445331,7 +460863,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -445344,7 +460876,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -445355,7 +460887,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -445366,7 +460898,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -445377,7 +460909,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -445389,7 +460921,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -445400,7 +460932,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -445410,7 +460942,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -445421,11 +460953,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -445436,11 +460968,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -445451,10 +460983,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -445465,11 +460997,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -445480,7 +461012,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -445489,7 +461021,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -445500,7 +461032,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -445509,7 +461041,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -445520,14 +461052,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -445538,7 +461070,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -445548,7 +461080,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -445559,14 +461091,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -445577,7 +461109,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -445588,7 +461120,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -445599,7 +461131,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -445609,7 +461141,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -445620,9 +461152,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -445631,7 +461163,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -445642,9 +461174,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -445652,7 +461184,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -445663,11 +461195,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -445678,13 +461210,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -445695,11 +461227,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -445710,10 +461242,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -445724,11 +461256,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -445739,13 +461271,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -445756,11 +461288,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -445771,13 +461303,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -445788,7 +461320,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -445798,7 +461330,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -445809,7 +461341,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -445818,7 +461350,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -445829,11 +461361,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -445844,13 +461376,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -445859,13 +461393,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -445874,13 +461408,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -445889,15 +461423,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -445906,11 +461438,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -445921,15 +461453,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -445938,16 +461468,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -445956,11 +461485,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -445971,15 +461500,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -445988,13 +461517,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -446003,12 +461535,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -446017,13 +461550,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -446034,13 +461567,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -446049,13 +461582,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -446064,13 +461596,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -446079,13 +461613,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -446094,15 +461628,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -446111,15 +461643,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -446128,15 +461658,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -446145,15 +461673,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -446162,7 +461690,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -446174,62 +461753,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -446238,12 +461764,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -446252,17 +461784,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -446271,16 +461802,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -446289,16 +461817,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -446307,13 +461831,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -446322,12 +461850,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -446336,15 +461868,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -446354,13 +461886,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -446369,13 +461901,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -446384,13 +461915,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -446399,16 +461933,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -446417,13 +461948,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -446432,15 +461963,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -446449,17 +461978,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -446468,18 +461996,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -446488,13 +462011,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -446503,12 +462028,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -446517,13 +462047,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -446532,15 +462067,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -446549,15 +462082,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -446566,15 +462096,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -446583,12 +462111,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -446597,13 +462128,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -446612,13 +462145,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -446627,15 +462162,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -446644,12 +462176,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -446659,13 +462191,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -446674,13 +462206,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -446689,13 +462223,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -446704,13 +462238,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -446719,13 +462253,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -446734,13 +462268,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -446749,18 +462283,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446773,9 +462352,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446788,9 +462367,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446803,9 +462382,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446818,9 +462397,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446833,9 +462412,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446848,9 +462427,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446863,9 +462442,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446878,9 +462457,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446893,9 +462472,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446908,9 +462487,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446923,9 +462502,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446938,9 +462517,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446953,9 +462532,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446968,9 +462547,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446983,9 +462562,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -446998,9 +462577,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447013,9 +462592,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447028,9 +462607,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447043,53 +462622,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -447097,13 +462631,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -447112,13 +462646,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -447127,13 +462661,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -447142,13 +462676,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -447157,15 +462691,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447178,9 +462772,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447188,14 +462782,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447208,9 +462802,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447223,9 +462817,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447238,9 +462832,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447253,9 +462847,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447263,14 +462857,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447278,14 +462872,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447293,14 +462887,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -447308,12 +462902,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__IdentWithOptionalType::IdentWithOptionalTypeParser;
@@ -447383,22 +462977,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -447412,7 +463008,7 @@
         // 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,
+        0, -169, -169, -169, -169, 16, -169, -169, -169, -169, -169, 0, 17, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 18, -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 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
@@ -447430,7 +463026,7 @@
         // 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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 17, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, 18, -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 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
@@ -447442,7 +463038,7 @@
         // 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,
+        0, -169, -169, -169, -169, 16, -169, -169, -169, -169, -169, 0, 17, 0, -169, 0, 116, -169, -169, -169, 0, -169, -169, -169, 18, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 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
@@ -447456,7 +463052,7 @@
         // 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, -174, 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,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, -177, 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
@@ -447470,13 +463066,13 @@
         // 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -169, 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, -173, 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, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -176, 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
@@ -447508,7 +463104,7 @@
         // State 52
         0, 0, 0, 143, 0, 0, 0, 144, 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, -188, 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, -188, 0,
+        0, 0, 0, 78, 0, 0, 0, 0, 79, -191, 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, -191, 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
@@ -447530,29 +463126,29 @@
         // 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, -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, -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 65
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, -220, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, -220, 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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, -193, -193, 0, 0, -193, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, -193, 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 68
-        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, -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 69
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 70
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 71
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, -215, -215, 0, 0, -215, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, -218, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, -218, 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, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, -214, -214, 0, 0, -214, -214, -214, 0, -214, -214, -214, 0, -214, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, -214, 0,
+        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
         // State 74
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, -216, -216, 0, 0, -216, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, -219, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, -219, 0,
         // State 75
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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
@@ -447588,7 +463184,7 @@
         // 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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, -172, -172, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, -172, 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
@@ -447604,9 +463200,9 @@
         // 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, -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, -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 102
-        0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -175, -175, 0, 0, -175, 0, 0, 0, 0, -175, 0, 0, 0, -175, 0, 0, 0, -175, 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, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 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
@@ -447616,25 +463212,25 @@
         // 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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 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 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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, -173, -173, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, -173, 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,
+        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 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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, -192, -192, 0, 0, -192, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, -192, 0,
+        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 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, -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, -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 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
@@ -447642,17 +463238,17 @@
         // 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, -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, -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 121
-        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, -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, -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, -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 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, -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, -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 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
@@ -447662,7 +463258,7 @@
         // 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,
+        0, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, -171, -171, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, -171, 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, 146, 0,
         // State 132
@@ -447674,25 +463270,25 @@
         // 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, -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, -218, -218, -218, 0, 0, -218, 0, 0, 0, 0, -218, 0, 0, 0, -218, 0, 0, 0, -218, 0,
+        0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 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, 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 139
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, -197, 0, -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, -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, 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 141
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 142
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 155, 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, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 144
         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, -99, 0,
         // State 145
-        0, 0, 0, 0, 0, 0, -187, 0, 0, -187, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 147
@@ -447706,19 +463302,19 @@
         // State 151
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -198, 0, -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, -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 153
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 154
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 155
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 156
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 158
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 159
         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 160
@@ -447730,7 +463326,7 @@
         // State 163
         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 164
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 165
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 166
@@ -447738,7 +463334,7 @@
         // State 167
         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 168
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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]
@@ -447867,7 +463463,7 @@
         // State 60
         0,
         // State 61
-        -236,
+        -239,
         // State 62
         0,
         // State 63
@@ -448164,22 +463760,22 @@
             },
             65 => 103,
             69 => 24,
-            72 => match state {
+            74 => match state {
                 11 | 24 => 104,
                 23 => 118,
                 _ => 65,
             },
-            73 => match state {
+            75 => match state {
                 14 => 110,
                 _ => 93,
             },
-            74 => 14,
-            76 => 105,
-            77 => match state {
+            76 => 14,
+            78 => 105,
+            79 => match state {
                 24 => 123,
                 _ => 106,
             },
-            81 => match state {
+            83 => match state {
                 35 => 134,
                 42 => 147,
                 48 => 158,
@@ -448187,26 +463783,26 @@
                 59 => 167,
                 _ => 97,
             },
-            82 => match state {
+            84 => match state {
                 41 => 144,
                 _ => 133,
             },
-            84 => 66,
-            85 => 67,
-            86 => match state {
+            86 => 66,
+            87 => 67,
+            88 => match state {
                 45 => 148,
                 46 => 149,
                 51 => 160,
                 _ => 140,
             },
-            88 => match state {
+            90 => match state {
                 47 => 153,
                 _ => 141,
             },
-            90 => 47,
-            91 => 6,
-            92 => 68,
-            93 => 107,
+            92 => 47,
+            93 => 6,
+            94 => 68,
+            95 => 107,
             _ => 0,
         }
     }
@@ -449448,25 +465044,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -449478,14 +465074,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -449497,19 +465093,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -449521,109 +465117,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -449635,109 +465231,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -449749,43 +465345,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -449797,220 +465393,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 109,
+                }
+            }
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            235 => __state_machine::SimulatedReduce::Accept,
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
-            238 => {
+            238 => __state_machine::SimulatedReduce::Accept,
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -450792,12 +466412,7 @@
                 __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             235 => {
-                // __IfStmt = IfStmt => ActionFn(15);
-                let __sym0 = __pop_Variant39(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action15::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             236 => {
                 __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -450806,7 +466421,12 @@
                 __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __IfStmt = IfStmt => ActionFn(15);
+                let __sym0 = __pop_Variant39(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action15::<>(__sym0);
+                return Some(Ok(__nt));
             }
             239 => {
                 __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -450859,6 +466479,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -450952,6 +466584,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -450962,13 +466604,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -451052,6 +466694,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -451072,13 +466724,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -451222,66 +466874,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -451292,13 +466944,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -451312,43 +466964,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -451362,13 +467014,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -451402,13 +467054,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -451462,13 +467114,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -451509,10 +467161,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -451523,11 +467175,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -451538,11 +467190,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -451553,13 +467205,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -451570,11 +467222,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -451585,10 +467237,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -451599,11 +467251,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -451614,10 +467266,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -451628,11 +467280,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -451643,10 +467295,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -451657,13 +467309,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -451674,13 +467326,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -451691,10 +467343,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -451705,14 +467357,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -451723,14 +467375,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -451741,10 +467393,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -451755,13 +467407,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -451772,13 +467424,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -451789,10 +467441,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -451803,14 +467455,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -451821,14 +467473,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -451839,10 +467491,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -451853,13 +467505,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -451870,10 +467522,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -451884,11 +467536,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -451899,13 +467551,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -451916,14 +467568,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -451934,13 +467586,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -451951,10 +467603,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -451965,11 +467617,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -451980,13 +467632,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -451997,14 +467649,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -452015,13 +467667,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -452032,10 +467684,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -452046,11 +467698,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -452061,13 +467713,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -452078,14 +467730,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -452096,13 +467748,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -452113,10 +467765,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -452127,11 +467779,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -452142,13 +467794,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -452159,14 +467811,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -452177,13 +467829,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -452194,10 +467846,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -452208,11 +467860,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -452223,13 +467875,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -452240,14 +467892,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -452258,13 +467910,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -452275,10 +467927,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -452289,11 +467941,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -452304,13 +467956,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -452321,14 +467973,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -452339,13 +467991,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -452356,10 +468008,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -452370,11 +468022,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -452385,13 +468037,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -452402,14 +468054,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -452420,10 +468072,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -452434,10 +468086,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -452448,14 +468100,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -452466,15 +468118,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -452485,14 +468137,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -452503,15 +468155,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -452522,11 +468174,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -452537,11 +468189,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -452552,11 +468204,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -452567,11 +468219,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -452582,11 +468234,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -452597,11 +468249,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -452612,11 +468264,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -452627,11 +468279,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -452642,11 +468294,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -452657,11 +468309,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -452672,11 +468324,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -452687,11 +468339,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -452702,11 +468354,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -452717,11 +468369,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -452732,11 +468384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -452747,11 +468399,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -452762,14 +468414,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -452780,11 +468432,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -452795,10 +468447,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -452809,13 +468461,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -452826,11 +468478,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -452841,11 +468493,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -452856,10 +468508,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -452870,13 +468522,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -452887,11 +468539,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -452902,11 +468554,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -452917,10 +468569,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -452931,13 +468583,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -452948,11 +468600,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -452963,11 +468615,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -452978,10 +468630,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -452992,13 +468644,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -453009,11 +468661,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -453024,11 +468676,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -453039,10 +468691,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -453053,13 +468705,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -453070,11 +468722,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -453085,11 +468737,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -453100,10 +468752,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -453114,13 +468766,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -453131,11 +468783,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -453146,7 +468798,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -453157,7 +468809,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -453168,11 +468820,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -453183,10 +468835,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -453197,13 +468849,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -453214,11 +468866,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -453229,14 +468881,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -453247,11 +468899,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -453262,11 +468914,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -453277,14 +468929,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -453295,13 +468947,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -453312,13 +468964,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -453329,13 +468981,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -453346,11 +468998,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -453361,14 +469013,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -453379,11 +469031,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -453394,14 +469046,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -453412,11 +469064,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -453427,11 +469079,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -453442,10 +469094,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -453456,7 +469108,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -453464,7 +469116,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -453475,14 +469127,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -453493,11 +469145,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -453508,10 +469160,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -453522,7 +469174,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -453531,7 +469183,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -453542,7 +469194,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -453553,7 +469205,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -453564,7 +469216,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -453578,7 +469230,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -453589,7 +469241,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -453601,7 +469253,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -453612,7 +469264,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -453625,7 +469277,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -453636,7 +469288,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -453647,7 +469299,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -453658,7 +469310,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -453671,7 +469323,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -453682,7 +469334,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -453693,7 +469345,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -453704,7 +469356,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -453716,7 +469368,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -453727,7 +469379,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -453737,7 +469389,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -453748,11 +469400,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -453763,11 +469415,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -453778,10 +469430,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -453792,11 +469444,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -453807,7 +469459,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -453816,7 +469468,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -453827,7 +469479,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -453836,7 +469488,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -453847,14 +469499,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -453865,7 +469517,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -453875,7 +469527,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -453886,14 +469538,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -453904,7 +469556,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -453915,7 +469567,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -453926,7 +469578,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -453936,7 +469588,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -453947,9 +469599,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -453958,7 +469610,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -453969,9 +469621,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -453979,7 +469631,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -453990,11 +469642,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -454005,13 +469657,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -454022,11 +469674,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -454037,10 +469689,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -454051,11 +469703,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -454066,13 +469718,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -454083,11 +469735,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -454098,13 +469750,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -454115,7 +469767,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -454125,7 +469777,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -454136,7 +469788,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -454145,7 +469797,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -454156,11 +469808,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -454171,13 +469823,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -454186,13 +469840,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -454201,13 +469855,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -454216,15 +469870,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -454233,11 +469885,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -454248,15 +469900,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -454265,16 +469915,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -454283,11 +469932,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -454298,15 +469947,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -454315,13 +469964,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -454330,12 +469982,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -454344,13 +469997,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -454361,13 +470014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -454376,13 +470029,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -454391,13 +470043,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -454406,13 +470060,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -454421,15 +470075,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -454438,15 +470090,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -454455,15 +470105,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -454472,15 +470120,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -454489,7 +470137,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -454501,62 +470200,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -454565,12 +470211,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -454579,17 +470231,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -454598,16 +470249,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -454616,16 +470264,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -454634,13 +470278,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -454649,12 +470297,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -454663,15 +470315,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -454681,13 +470333,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -454696,13 +470348,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -454711,13 +470362,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -454726,16 +470380,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -454744,13 +470395,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -454759,15 +470410,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -454776,17 +470425,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -454795,18 +470443,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -454815,13 +470458,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -454830,12 +470475,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -454844,13 +470494,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -454859,15 +470514,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -454876,15 +470529,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -454893,15 +470543,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -454910,12 +470558,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -454924,13 +470575,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -454939,13 +470592,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -454954,15 +470609,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -454971,12 +470623,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -454986,13 +470638,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -455001,13 +470653,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -455016,13 +470670,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -455031,13 +470685,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -455046,13 +470700,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -455061,13 +470715,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -455076,18 +470730,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455100,9 +470799,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455115,9 +470814,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455130,9 +470829,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455145,9 +470844,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455160,9 +470859,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455175,9 +470874,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455190,9 +470889,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455205,9 +470904,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455220,9 +470919,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455235,9 +470934,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455250,9 +470949,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455265,9 +470964,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455280,9 +470979,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455295,9 +470994,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455310,9 +471009,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455325,9 +471024,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455340,9 +471039,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455355,9 +471054,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455370,53 +471069,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -455424,13 +471078,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -455439,13 +471093,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -455454,13 +471108,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -455469,13 +471123,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -455484,15 +471138,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455505,9 +471219,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455515,14 +471229,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455535,9 +471249,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455550,9 +471264,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455565,9 +471279,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455580,9 +471294,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455590,14 +471304,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455605,14 +471319,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455620,14 +471334,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -455635,12 +471349,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__IfStmt::IfStmtParser;
@@ -455710,22 +471424,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -455784,7 +471500,7 @@
         // State 4
         0,
         // State 5
-        -237,
+        -240,
         // State 6
         0,
         // State 7
@@ -457068,25 +472784,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -457098,14 +472814,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -457117,19 +472833,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -457141,109 +472857,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -457255,109 +472971,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -457369,43 +473085,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -457417,220 +473133,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 110,
+                }
+            }
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            236 => __state_machine::SimulatedReduce::Accept,
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
-            239 => {
+            239 => __state_machine::SimulatedReduce::Accept,
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -458415,12 +474155,7 @@
                 __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             236 => {
-                // __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));
+                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             237 => {
                 __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -458429,7 +474164,12 @@
                 __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             239 => {
-                __reduce239(__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));
             }
             240 => {
                 __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -458479,6 +474219,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -458572,6 +474324,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -458582,13 +474344,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -458672,6 +474434,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -458692,13 +474464,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -458842,66 +474614,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -458912,13 +474684,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -458932,43 +474704,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -458982,13 +474754,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -459022,13 +474794,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -459082,13 +474854,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -459129,10 +474901,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -459143,11 +474915,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -459158,11 +474930,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -459173,13 +474945,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -459190,11 +474962,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -459205,10 +474977,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -459219,11 +474991,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -459234,10 +475006,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -459248,11 +475020,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -459263,10 +475035,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -459277,13 +475049,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -459294,13 +475066,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -459311,10 +475083,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -459325,14 +475097,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -459343,14 +475115,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -459361,10 +475133,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -459375,13 +475147,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -459392,13 +475164,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -459409,10 +475181,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -459423,14 +475195,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -459441,14 +475213,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -459459,10 +475231,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -459473,13 +475245,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -459490,10 +475262,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -459504,11 +475276,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -459519,13 +475291,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -459536,14 +475308,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -459554,13 +475326,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -459571,10 +475343,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -459585,11 +475357,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -459600,13 +475372,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -459617,14 +475389,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -459635,13 +475407,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -459652,10 +475424,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -459666,11 +475438,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -459681,13 +475453,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -459698,14 +475470,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -459716,13 +475488,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -459733,10 +475505,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -459747,11 +475519,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -459762,13 +475534,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -459779,14 +475551,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -459797,13 +475569,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -459814,10 +475586,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -459828,11 +475600,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -459843,13 +475615,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -459860,14 +475632,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -459878,13 +475650,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -459895,10 +475667,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -459909,11 +475681,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -459924,13 +475696,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -459941,14 +475713,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -459959,13 +475731,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -459976,10 +475748,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -459990,11 +475762,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -460005,13 +475777,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -460022,14 +475794,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -460040,10 +475812,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -460054,10 +475826,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -460068,14 +475840,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -460086,15 +475858,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -460105,14 +475877,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -460123,15 +475895,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -460142,11 +475914,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -460157,11 +475929,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -460172,11 +475944,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -460187,11 +475959,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -460202,11 +475974,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -460217,11 +475989,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -460232,11 +476004,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -460247,11 +476019,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -460262,11 +476034,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -460277,11 +476049,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -460292,11 +476064,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -460307,11 +476079,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -460322,11 +476094,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -460337,11 +476109,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -460352,11 +476124,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -460367,11 +476139,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -460382,14 +476154,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -460400,11 +476172,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -460415,10 +476187,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -460429,13 +476201,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -460446,11 +476218,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -460461,11 +476233,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -460476,10 +476248,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -460490,13 +476262,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -460507,11 +476279,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -460522,11 +476294,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -460537,10 +476309,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -460551,13 +476323,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -460568,11 +476340,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -460583,11 +476355,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -460598,10 +476370,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -460612,13 +476384,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -460629,11 +476401,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -460644,11 +476416,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -460659,10 +476431,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -460673,13 +476445,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -460690,11 +476462,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -460705,11 +476477,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -460720,10 +476492,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -460734,13 +476506,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -460751,11 +476523,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -460766,7 +476538,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -460777,7 +476549,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -460788,11 +476560,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -460803,10 +476575,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -460817,13 +476589,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -460834,11 +476606,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -460849,14 +476621,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -460867,11 +476639,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -460882,11 +476654,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -460897,14 +476669,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -460915,13 +476687,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -460932,13 +476704,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -460949,13 +476721,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -460966,11 +476738,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -460981,14 +476753,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -460999,11 +476771,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -461014,14 +476786,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -461032,11 +476804,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -461047,11 +476819,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -461062,10 +476834,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -461076,7 +476848,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -461084,7 +476856,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -461095,14 +476867,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -461113,11 +476885,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -461128,10 +476900,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -461142,7 +476914,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -461151,7 +476923,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -461162,7 +476934,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -461173,7 +476945,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -461184,7 +476956,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -461198,7 +476970,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -461209,7 +476981,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -461221,7 +476993,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -461232,7 +477004,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -461245,7 +477017,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -461256,7 +477028,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -461267,7 +477039,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -461278,7 +477050,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -461291,7 +477063,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -461302,7 +477074,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -461313,7 +477085,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -461324,7 +477096,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -461336,7 +477108,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -461347,7 +477119,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -461357,7 +477129,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -461368,11 +477140,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -461383,11 +477155,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -461398,10 +477170,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -461412,11 +477184,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -461427,7 +477199,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -461436,7 +477208,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -461447,7 +477219,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -461456,7 +477228,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -461467,14 +477239,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -461485,7 +477257,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -461495,7 +477267,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -461506,14 +477278,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -461524,7 +477296,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -461535,7 +477307,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -461546,7 +477318,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -461556,7 +477328,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -461567,9 +477339,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -461578,7 +477350,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -461589,9 +477361,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -461599,7 +477371,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -461610,11 +477382,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -461625,13 +477397,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -461642,11 +477414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -461657,10 +477429,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -461671,11 +477443,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -461686,13 +477458,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -461703,11 +477475,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -461718,13 +477490,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -461735,7 +477507,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -461745,7 +477517,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -461756,7 +477528,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -461765,7 +477537,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -461776,11 +477548,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -461791,13 +477563,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -461806,13 +477580,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -461821,13 +477595,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -461836,15 +477610,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -461853,11 +477625,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -461868,15 +477640,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -461885,16 +477655,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -461903,11 +477672,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -461918,15 +477687,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -461935,13 +477704,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -461950,12 +477722,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -461964,13 +477737,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -461981,13 +477754,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -461996,13 +477769,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -462011,13 +477783,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -462026,13 +477800,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -462041,15 +477815,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -462058,15 +477830,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -462075,15 +477845,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -462092,15 +477860,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -462109,7 +477877,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -462121,62 +477940,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -462185,12 +477951,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -462199,17 +477971,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -462218,16 +477989,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -462236,16 +478004,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -462254,13 +478018,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -462269,12 +478037,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -462283,15 +478055,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -462301,13 +478073,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -462316,13 +478088,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -462331,13 +478102,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -462346,16 +478120,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -462364,13 +478135,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -462379,15 +478150,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -462396,17 +478165,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -462415,18 +478183,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -462435,13 +478198,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -462450,12 +478215,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -462464,13 +478234,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -462479,15 +478254,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -462496,15 +478269,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -462513,15 +478283,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -462530,12 +478298,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -462544,13 +478315,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -462559,13 +478332,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -462574,15 +478349,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -462591,12 +478363,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -462606,13 +478378,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -462621,13 +478393,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -462636,13 +478410,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -462651,13 +478425,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -462666,13 +478440,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -462681,13 +478455,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -462696,18 +478470,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462720,9 +478539,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462735,9 +478554,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462750,9 +478569,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462765,9 +478584,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462780,9 +478599,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462795,9 +478614,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462810,9 +478629,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462825,9 +478644,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462840,9 +478659,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462855,9 +478674,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462870,9 +478689,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462885,9 +478704,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462900,9 +478719,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462915,9 +478734,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462930,9 +478749,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462945,9 +478764,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462960,9 +478779,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462975,9 +478794,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -462990,53 +478809,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -463044,13 +478818,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -463059,13 +478833,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -463074,13 +478848,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -463089,13 +478863,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -463104,15 +478878,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463125,9 +478959,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463135,14 +478969,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463155,9 +478989,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463170,9 +479004,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463185,9 +479019,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463200,9 +479034,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463210,14 +479044,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463225,14 +479059,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463240,14 +479074,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -463255,12 +479089,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Import::ImportParser;
@@ -463330,22 +479164,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -463373,7 +479209,7 @@
         // State 11
         0, 0, 90, -111, 0, 0, -111, 91, -111, -111, -111, 0, 0, 0, 92, 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 12
-        0, -166, -166, -166, -166, 24, -166, -166, -166, -166, -166, 0, 25, 0, -166, 0, 94, 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,
+        0, -169, -169, -169, -169, 24, -169, -169, -169, -169, -169, 0, 25, 0, -169, 0, 94, 0, -169, -169, 0, -169, -169, -169, 26, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 13
         68, 0, 0, 15, 0, 16, 0, 17, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 44, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 14
@@ -463393,7 +479229,7 @@
         // State 21
         68, 0, 0, 15, 0, 16, 0, 17, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 44, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 22
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 25, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 26, -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 23
         68, 0, 0, 15, 0, 16, -82, 17, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 44, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 24
@@ -463403,7 +479239,7 @@
         // 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, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 27
-        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,
+        0, -169, -169, -169, -169, 24, -169, -169, -169, -169, -169, 0, 25, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 26, -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 28
         68, 0, 0, 15, 0, 16, 0, 17, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 44, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 29
@@ -463429,7 +479265,7 @@
         // State 39
         68, 0, 0, 15, 0, 16, 0, 17, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 44, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 40
-        0, 0, 0, 77, 0, 0, 0, 0, 78, -188, 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, -188, 0,
+        0, 0, 0, 77, 0, 0, 0, 0, 78, -191, 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, -191, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 42
@@ -463439,25 +479275,25 @@
         // State 44
         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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, -197, 0, -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, -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 46
         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
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 48
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 53, 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, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 50
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, -198, 0, -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, -201, 0, 0, 0, 0, 0, 0, 0, 0, 18, 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 51
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 52
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 53
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 54
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 55
         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 56
@@ -463469,35 +479305,35 @@
         // State 59
         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 60
-        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, -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 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, 27, 0, 0, 0, 0,
         // State 62
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // State 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,
         // State 64
         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 65
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 66
-        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, -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 67
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 68
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 69
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 70
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 71
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 72
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 73
         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 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 75
         0, 0, 0, -56, 0, 0, 0, -56, 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 76
@@ -463533,7 +479369,7 @@
         // 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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 93
         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 94
@@ -463553,11 +479389,11 @@
         // State 101
         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 102
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 103
         0, 0, 0, 0, 0, 0, 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,
         // State 104
-        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, -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 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, 118, 0,
         // State 106
@@ -463567,11 +479403,11 @@
         // State 108
         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 109
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 110
-        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, -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 111
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 112
         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 113
@@ -463579,11 +479415,11 @@
         // State 114
         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, 0, 0, 0, 0,
         // State 115
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 0,
         // State 116
         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, -99, 0,
         // State 117
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 119
@@ -463593,7 +479429,7 @@
         // 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, 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 122
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -463624,7 +479460,7 @@
         // State 11
         -111,
         // State 12
-        -166,
+        -169,
         // State 13
         0,
         // State 14
@@ -463644,7 +479480,7 @@
         // State 21
         0,
         // State 22
-        -165,
+        -168,
         // State 23
         0,
         // State 24
@@ -463654,7 +479490,7 @@
         // State 26
         0,
         // State 27
-        -166,
+        -169,
         // State 28
         0,
         // State 29
@@ -463682,7 +479518,7 @@
         // State 40
         0,
         // State 41
-        -238,
+        -241,
         // State 42
         0,
         // State 43
@@ -463720,29 +479556,29 @@
         // State 59
         -119,
         // State 60
-        -195,
+        -198,
         // State 61
         0,
         // State 62
-        -217,
+        -220,
         // State 63
         -150,
         // State 64
         -112,
         // State 65
-        -193,
+        -196,
         // State 66
-        -194,
+        -197,
         // State 67
         0,
         // State 68
         0,
         // State 69
-        -215,
+        -218,
         // State 70
-        -214,
+        -217,
         // State 71
-        -216,
+        -219,
         // State 72
         0,
         // State 73
@@ -463784,7 +479620,7 @@
         // State 91
         0,
         // State 92
-        -169,
+        -172,
         // State 93
         0,
         // State 94
@@ -463804,11 +479640,11 @@
         // State 101
         -118,
         // State 102
-        -170,
+        -173,
         // State 103
         0,
         // State 104
-        -167,
+        -170,
         // State 105
         0,
         // State 106
@@ -463818,9 +479654,9 @@
         // State 108
         -113,
         // State 109
-        -192,
+        -195,
         // State 110
-        -196,
+        -199,
         // State 111
         0,
         // State 112
@@ -463830,11 +479666,11 @@
         // State 114
         0,
         // State 115
-        -168,
+        -171,
         // State 116
         0,
         // State 117
-        -187,
+        -190,
         // State 118
         0,
         // State 119
@@ -463900,37 +479736,37 @@
             },
             62 => 61,
             65 => 41,
-            72 => 62,
-            73 => match state {
+            74 => 62,
+            75 => match state {
                 22 => 102,
                 _ => 92,
             },
-            74 => 22,
-            81 => match state {
+            76 => 22,
+            83 => match state {
                 15 => 96,
                 18 => 99,
                 39 => 122,
                 _ => 63,
             },
-            82 => match state {
+            84 => match state {
                 37 => 116,
                 _ => 107,
             },
-            84 => 64,
-            85 => 65,
-            86 => match state {
+            86 => 64,
+            87 => 65,
+            88 => match state {
                 3 => 46,
                 5 => 55,
                 8 => 73,
                 _ => 57,
             },
-            88 => match state {
+            90 => match state {
                 4 => 51,
                 _ => 47,
             },
-            90 => 4,
-            91 => 13,
-            92 => 66,
+            92 => 4,
+            93 => 13,
+            94 => 66,
             _ => 0,
         }
     }
@@ -465172,25 +481008,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -465202,14 +481038,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -465221,19 +481057,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -465245,109 +481081,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -465359,109 +481195,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -465473,43 +481309,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -465521,220 +481357,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 111,
+                }
+            }
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            237 => __state_machine::SimulatedReduce::Accept,
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
-            240 => {
+            240 => __state_machine::SimulatedReduce::Accept,
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -466522,12 +482382,7 @@
                 __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             237 => {
-                // __LetStmt = LetStmt => ActionFn(10);
-                let __sym0 = __pop_Variant41(__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::<()>)
@@ -466536,7 +482391,12 @@
                 __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __LetStmt = LetStmt => ActionFn(10);
+                let __sym0 = __pop_Variant41(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action10::<>(__sym0);
+                return Some(Ok(__nt));
             }
             241 => {
                 __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -466583,6 +482443,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -466676,6 +482548,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -466686,13 +482568,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -466776,6 +482658,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -466796,13 +482688,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -466946,66 +482838,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -467016,13 +482908,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -467036,43 +482928,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -467086,13 +482978,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -467126,13 +483018,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -467186,13 +483078,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -467233,10 +483125,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -467247,11 +483139,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -467262,11 +483154,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -467277,13 +483169,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -467294,11 +483186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -467309,10 +483201,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -467323,11 +483215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -467338,10 +483230,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -467352,11 +483244,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -467367,10 +483259,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -467381,13 +483273,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -467398,13 +483290,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -467415,10 +483307,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -467429,14 +483321,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -467447,14 +483339,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -467465,10 +483357,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -467479,13 +483371,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -467496,13 +483388,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -467513,10 +483405,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -467527,14 +483419,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -467545,14 +483437,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -467563,10 +483455,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -467577,13 +483469,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -467594,10 +483486,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -467608,11 +483500,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -467623,13 +483515,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -467640,14 +483532,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -467658,13 +483550,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -467675,10 +483567,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -467689,11 +483581,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -467704,13 +483596,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -467721,14 +483613,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -467739,13 +483631,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -467756,10 +483648,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -467770,11 +483662,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -467785,13 +483677,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -467802,14 +483694,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -467820,13 +483712,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -467837,10 +483729,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -467851,11 +483743,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -467866,13 +483758,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -467883,14 +483775,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -467901,13 +483793,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -467918,10 +483810,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -467932,11 +483824,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -467947,13 +483839,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -467964,14 +483856,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -467982,13 +483874,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -467999,10 +483891,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -468013,11 +483905,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -468028,13 +483920,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -468045,14 +483937,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -468063,13 +483955,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -468080,10 +483972,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -468094,11 +483986,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -468109,13 +484001,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -468126,14 +484018,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -468144,10 +484036,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -468158,10 +484050,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -468172,14 +484064,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -468190,15 +484082,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -468209,14 +484101,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -468227,15 +484119,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -468246,11 +484138,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -468261,11 +484153,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -468276,11 +484168,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -468291,11 +484183,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -468306,11 +484198,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -468321,11 +484213,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -468336,11 +484228,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -468351,11 +484243,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -468366,11 +484258,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -468381,11 +484273,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -468396,11 +484288,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -468411,11 +484303,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -468426,11 +484318,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -468441,11 +484333,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -468456,11 +484348,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -468471,11 +484363,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -468486,14 +484378,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -468504,11 +484396,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -468519,10 +484411,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -468533,13 +484425,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -468550,11 +484442,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -468565,11 +484457,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -468580,10 +484472,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -468594,13 +484486,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -468611,11 +484503,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -468626,11 +484518,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -468641,10 +484533,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -468655,13 +484547,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -468672,11 +484564,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -468687,11 +484579,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -468702,10 +484594,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -468716,13 +484608,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -468733,11 +484625,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -468748,11 +484640,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -468763,10 +484655,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -468777,13 +484669,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -468794,11 +484686,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -468809,11 +484701,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -468824,10 +484716,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -468838,13 +484730,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -468855,11 +484747,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -468870,7 +484762,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -468881,7 +484773,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -468892,11 +484784,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -468907,10 +484799,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -468921,13 +484813,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -468938,11 +484830,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -468953,14 +484845,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -468971,11 +484863,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -468986,11 +484878,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -469001,14 +484893,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -469019,13 +484911,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -469036,13 +484928,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -469053,13 +484945,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -469070,11 +484962,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -469085,14 +484977,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -469103,11 +484995,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -469118,14 +485010,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -469136,11 +485028,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -469151,11 +485043,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -469166,10 +485058,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -469180,7 +485072,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -469188,7 +485080,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -469199,14 +485091,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -469217,11 +485109,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -469232,10 +485124,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -469246,7 +485138,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -469255,7 +485147,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -469266,7 +485158,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -469277,7 +485169,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -469288,7 +485180,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -469302,7 +485194,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -469313,7 +485205,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -469325,7 +485217,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -469336,7 +485228,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -469349,7 +485241,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -469360,7 +485252,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -469371,7 +485263,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -469382,7 +485274,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -469395,7 +485287,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -469406,7 +485298,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -469417,7 +485309,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -469428,7 +485320,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -469440,7 +485332,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -469451,7 +485343,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -469461,7 +485353,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -469472,11 +485364,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -469487,11 +485379,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -469502,10 +485394,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -469516,11 +485408,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -469531,7 +485423,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -469540,7 +485432,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -469551,7 +485443,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -469560,7 +485452,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -469571,14 +485463,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -469589,7 +485481,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -469599,7 +485491,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -469610,14 +485502,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -469628,7 +485520,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -469639,7 +485531,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -469650,7 +485542,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -469660,7 +485552,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -469671,9 +485563,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -469682,7 +485574,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -469693,9 +485585,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -469703,7 +485595,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -469714,11 +485606,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -469729,13 +485621,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -469746,11 +485638,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -469761,10 +485653,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -469775,11 +485667,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -469790,13 +485682,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -469807,11 +485699,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -469822,13 +485714,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -469839,7 +485731,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -469849,7 +485741,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -469860,7 +485752,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -469869,7 +485761,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -469880,11 +485772,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -469895,13 +485787,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -469910,13 +485804,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -469925,13 +485819,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -469940,15 +485834,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -469957,11 +485849,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -469972,15 +485864,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -469989,16 +485879,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -470007,11 +485896,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -470022,15 +485911,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -470039,13 +485928,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -470054,12 +485946,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -470068,13 +485961,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -470085,13 +485978,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -470100,13 +485993,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -470115,13 +486007,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -470130,13 +486024,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -470145,15 +486039,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -470162,15 +486054,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -470179,15 +486069,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -470196,15 +486084,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -470213,7 +486101,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -470225,62 +486164,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -470289,12 +486175,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -470303,17 +486195,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -470322,16 +486213,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -470340,16 +486228,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -470358,13 +486242,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -470373,12 +486261,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -470387,15 +486279,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -470405,13 +486297,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -470420,13 +486312,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -470435,13 +486326,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -470450,16 +486344,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -470468,13 +486359,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -470483,15 +486374,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -470500,17 +486389,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -470519,18 +486407,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -470539,13 +486422,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -470554,12 +486439,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -470568,13 +486458,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -470583,15 +486478,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -470600,15 +486493,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -470617,15 +486507,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -470634,12 +486522,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -470648,13 +486539,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -470663,13 +486556,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -470678,15 +486573,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -470695,12 +486587,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -470710,13 +486602,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -470725,13 +486617,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -470740,13 +486634,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -470755,13 +486649,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -470770,13 +486664,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -470785,13 +486679,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -470800,18 +486694,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470824,9 +486763,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470839,9 +486778,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470854,9 +486793,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470869,9 +486808,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470884,9 +486823,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470899,9 +486838,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470914,9 +486853,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470929,9 +486868,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470944,9 +486883,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470959,9 +486898,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470974,9 +486913,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -470989,9 +486928,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471004,9 +486943,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471019,9 +486958,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471034,9 +486973,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471049,9 +486988,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471064,9 +487003,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471079,9 +487018,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471094,53 +487033,8 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
     }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
-    }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -471148,13 +487042,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -471163,13 +487057,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -471178,13 +487072,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -471193,13 +487087,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -471208,15 +487102,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471229,9 +487183,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471239,14 +487193,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471259,9 +487213,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471274,9 +487228,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471289,9 +487243,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471304,9 +487258,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471314,14 +487268,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471329,14 +487283,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471344,14 +487298,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -471359,12 +487313,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__LetStmt::LetStmtParser;
@@ -471434,22 +487388,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -471523,7 +487479,7 @@
         // State 34
         0, 0, 202, -111, 0, 0, -111, 203, -111, -111, -111, 0, 0, -111, 204, 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 35
-        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,
+        0, -169, -169, -169, -169, 51, -169, -169, -169, -169, -169, 0, 52, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 53, -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 36
         172, 0, 0, 38, 0, 39, 0, 40, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 105, 0, 0, 175, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 177,
         // State 37
@@ -471551,7 +487507,7 @@
         // State 48
         172, 0, 0, 38, 0, 39, 0, 40, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 105, 0, 0, 175, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 177,
         // State 49
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 52, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, 53, -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 50
         172, 0, 0, 38, 0, 39, -82, 40, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 105, 0, 0, 175, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 177,
         // State 51
@@ -471563,7 +487519,7 @@
         // State 54
         0, 0, 0, 188, 0, 0, 230, 0, 189, 0, 190, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0,
         // State 55
-        0, -166, -166, -166, -166, 51, -166, -166, -166, -166, -166, 0, 52, 0, -166, 0, 231, -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,
+        0, -169, -169, -169, -169, 51, -169, -169, -169, -169, -169, 0, 52, 0, -169, 0, 231, -169, -169, -169, 0, -169, -169, -169, 53, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 56
         0, 0, 0, 132, 0, 0, 0, 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, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 57
@@ -471579,7 +487535,7 @@
         // 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, 105, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 63
-        172, 0, 0, 38, 0, 39, 0, 40, 0, 0, 173, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 105, 0, 0, 175, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 177,
+        172, 0, 0, 38, 0, 39, 0, 40, 0, 0, 173, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 105, 0, 0, 175, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 177,
         // State 64
         172, 0, 0, 38, 0, 39, 0, 40, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 105, 0, 0, 175, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 177,
         // State 65
@@ -471601,7 +487557,7 @@
         // 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,
         // State 74
-        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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, -169, 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
         172, 0, 0, 38, 0, 39, 0, 40, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 105, 0, 0, 175, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 177,
         // State 76
@@ -471609,7 +487565,7 @@
         // 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, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 78
-        0, 0, 0, 188, 0, 0, 0, 0, 189, 0, 190, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 0, 0, 192, 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, 188, 0, 0, 0, 0, 189, 0, 190, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 192, 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,
         // State 79
         0, 0, 0, 188, 0, 0, 0, 0, 189, 0, 190, 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, 0, 0, 0, 0, 0, 0, 0, 0, 44, 193, 0, 0, 0,
         // State 80
@@ -471643,7 +487599,7 @@
         // State 94
         0, 0, 0, 132, 0, 0, 0, 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, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 95
-        0, 0, 0, 188, 0, 0, 0, 0, 189, -188, 190, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, -188, 0,
+        0, 0, 0, 188, 0, 0, 0, 0, 189, -191, 190, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, -191, 0,
         // State 96
         172, 0, 0, 38, 0, 39, 0, 40, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 105, 0, 0, 175, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 177,
         // State 97
@@ -471663,17 +487619,17 @@
         // State 104
         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, -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, -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 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, -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, -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, -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, 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,
+        0, 0, 0, 0, 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, 0, -166, -166, 0, 0, 0, 0, 0, 0, 0, -166, 0, -166, 0, 0, -166, 0, 0, 0, 0, 0, -166, 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, -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, 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, 0, -165, -165, 0, 0, 0, 0, 0, 0, 0, -165, 0, -165, 0, 0, -165, 0, 0, 0, 0, 0, -165, 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, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
@@ -471709,13 +487665,13 @@
         // State 127
         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, -197, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, -197, 0, -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, -197, 0, 0, -197, 0,
+        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 129
         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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 131
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 148, 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, 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, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 133
@@ -471743,15 +487699,15 @@
         // State 144
         0, 0, 0, 0, 0, 0, 0, 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, -89, 0,
         // State 145
-        0, 0, 0, 0, 0, 0, -198, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, -198, 0, -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, -198, 0, 0, -198, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 41, 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 146
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 147
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 148
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 149
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 151
@@ -471769,7 +487725,7 @@
         // State 157
         0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
         // State 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, -183, 0, -183, -183, 0, 0, 0, 0, 0, 0, 0, -183, 0, -183, 0, 0, -183, 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, -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 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, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
         // State 160
@@ -471785,27 +487741,27 @@
         // State 165
         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 166
-        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, -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 167
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, -220, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, -220, 0,
         // State 168
         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 169
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, -193, -193, 0, 0, -193, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, -193, 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 170
-        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, -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 171
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 172
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 173
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, -215, -215, 0, 0, -215, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, -218, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, -218, 0,
         // State 174
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, -214, -214, 0, 0, -214, -214, -214, 0, -214, -214, -214, 0, -214, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, -214, 0,
+        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
         // State 175
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, -216, -216, 0, 0, -216, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, -219, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, -219, 0,
         // State 176
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 177
         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 178
@@ -471819,13 +487775,13 @@
         // State 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, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0,
         // State 183
-        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, 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, -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, -187, 0,
         // State 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, 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 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, -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 186
-        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 187
         -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 188
@@ -471861,7 +487817,7 @@
         // State 203
         -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 204
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, -172, -172, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, -172, 0,
         // State 205
         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 206
@@ -471881,9 +487837,9 @@
         // State 213
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
         // State 214
-        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, -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 215
-        0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -175, -175, 0, 0, -175, 0, 0, 0, 0, -175, 0, 0, 0, -175, 0, 0, 0, -175, 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, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 216
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
         // State 217
@@ -471893,7 +487849,7 @@
         // State 219
         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 220
-        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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 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 221
         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 222
@@ -471903,21 +487859,21 @@
         // State 224
         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 225
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, -173, -173, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, -173, 0,
         // State 226
         0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 227
-        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, -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 228
         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 229
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, -192, -192, 0, 0, -192, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, -192, 0,
+        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 230
         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 231
-        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, -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 232
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 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, -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 234
@@ -471925,17 +487881,17 @@
         // State 235
         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 236
-        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, -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 237
-        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, -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 238
-        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, -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 239
         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 240
         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 241
-        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, -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 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, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 243
@@ -471943,13 +487899,13 @@
         // 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, -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 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, -182, 0, -182, -182, 0, 0, 0, 0, 0, 0, 0, -182, 0, -182, 0, 0, -182, 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, -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 246
         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 247
         -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 248
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, -171, -171, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, -171, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0,
         // State 250
@@ -471965,7 +487921,7 @@
         // State 255
         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 256
-        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, -218, -218, -218, 0, 0, -218, 0, 0, 0, 0, -218, 0, 0, 0, -218, 0, 0, 0, -218, 0,
+        0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 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, -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 258
@@ -471975,7 +487931,7 @@
         // State 260
         0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 261
-        0, 0, 0, 0, 0, 0, -187, 0, 0, -187, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 263
@@ -471989,7 +487945,7 @@
         // State 267
         0, 0, 0, 0, 0, 0, 0, 0, 0, 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 268
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 269
         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 270
@@ -472212,7 +488168,7 @@
         // State 101
         0,
         // State 102
-        -239,
+        -242,
         // State 103
         0,
         // State 104
@@ -472694,31 +488650,31 @@
                 0 => 102,
                 _ => 108,
             },
-            71 => match state {
+            72 => match state {
                 2..=3 => 109,
                 _ => 114,
             },
-            72 => match state {
+            74 => match state {
                 43 | 59 => 217,
                 58 => 234,
                 _ => 167,
             },
-            73 => match state {
+            75 => match state {
                 49 => 225,
                 _ => 204,
             },
-            74 => 49,
-            76 => 218,
-            77 => match state {
+            76 => 49,
+            78 => 218,
+            79 => match state {
                 59 => 239,
                 _ => 219,
             },
-            78 => 110,
-            79 => match state {
+            80 => 110,
+            81 => match state {
                 24 => 157,
                 _ => 141,
             },
-            81 => match state {
+            83 => match state {
                 75 => 253,
                 85 => 263,
                 90 => 268,
@@ -472726,13 +488682,13 @@
                 100 => 274,
                 _ => 208,
             },
-            82 => match state {
+            84 => match state {
                 84 => 260,
                 _ => 251,
             },
-            84 => 168,
-            85 => 169,
-            86 => match state {
+            86 => 168,
+            87 => 169,
+            88 => match state {
                 42 => 57,
                 56 => 73,
                 66 => 81,
@@ -472745,14 +488701,14 @@
                 94 => 271,
                 _ => 138,
             },
-            88 => match state {
+            90 => match state {
                 19 => 146,
                 _ => 130,
             },
-            90 => 19,
-            91 => 36,
-            92 => 170,
-            93 => 220,
+            92 => 19,
+            93 => 36,
+            94 => 170,
+            95 => 220,
             _ => 0,
         }
     }
@@ -473994,25 +489950,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -474024,14 +489980,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -474043,19 +489999,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -474067,109 +490023,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -474181,109 +490137,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -474295,43 +490251,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -474343,220 +490299,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 112,
+                }
+            }
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            238 => __state_machine::SimulatedReduce::Accept,
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
-            241 => {
+            241 => __state_machine::SimulatedReduce::Accept,
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -475347,12 +491327,7 @@
                 __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             238 => {
-                // __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));
+                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             239 => {
                 __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -475361,7 +491336,12 @@
                 __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Module = Module => ActionFn(37);
+                let __sym0 = __pop_Variant46(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action37::<>(__sym0);
+                return Some(Ok(__nt));
             }
             242 => {
                 __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -475405,6 +491385,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -475498,6 +491490,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -475508,13 +491510,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -475598,6 +491600,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -475618,13 +491630,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -475768,66 +491780,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -475838,13 +491850,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -475858,43 +491870,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -475908,13 +491920,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -475948,13 +491960,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -476008,13 +492020,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -476055,10 +492067,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -476069,11 +492081,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -476084,11 +492096,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -476099,13 +492111,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -476116,11 +492128,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -476131,10 +492143,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -476145,11 +492157,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -476160,10 +492172,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -476174,11 +492186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -476189,10 +492201,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -476203,13 +492215,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -476220,13 +492232,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -476237,10 +492249,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -476251,14 +492263,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -476269,14 +492281,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -476287,10 +492299,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -476301,13 +492313,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -476318,13 +492330,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -476335,10 +492347,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -476349,14 +492361,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -476367,14 +492379,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -476385,10 +492397,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -476399,13 +492411,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -476416,10 +492428,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -476430,11 +492442,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -476445,13 +492457,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -476462,14 +492474,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -476480,13 +492492,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -476497,10 +492509,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -476511,11 +492523,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -476526,13 +492538,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -476543,14 +492555,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -476561,13 +492573,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -476578,10 +492590,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -476592,11 +492604,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -476607,13 +492619,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -476624,14 +492636,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -476642,13 +492654,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -476659,10 +492671,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -476673,11 +492685,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -476688,13 +492700,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -476705,14 +492717,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -476723,13 +492735,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -476740,10 +492752,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -476754,11 +492766,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -476769,13 +492781,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -476786,14 +492798,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -476804,13 +492816,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -476821,10 +492833,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -476835,11 +492847,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -476850,13 +492862,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -476867,14 +492879,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -476885,13 +492897,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -476902,10 +492914,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -476916,11 +492928,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -476931,13 +492943,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -476948,14 +492960,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -476966,10 +492978,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -476980,10 +492992,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -476994,14 +493006,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -477012,15 +493024,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -477031,14 +493043,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -477049,15 +493061,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -477068,11 +493080,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -477083,11 +493095,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -477098,11 +493110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -477113,11 +493125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -477128,11 +493140,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -477143,11 +493155,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -477158,11 +493170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -477173,11 +493185,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -477188,11 +493200,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -477203,11 +493215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -477218,11 +493230,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -477233,11 +493245,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -477248,11 +493260,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -477263,11 +493275,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -477278,11 +493290,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -477293,11 +493305,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -477308,14 +493320,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -477326,11 +493338,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -477341,10 +493353,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -477355,13 +493367,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -477372,11 +493384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -477387,11 +493399,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -477402,10 +493414,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -477416,13 +493428,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -477433,11 +493445,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -477448,11 +493460,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -477463,10 +493475,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -477477,13 +493489,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -477494,11 +493506,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -477509,11 +493521,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -477524,10 +493536,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -477538,13 +493550,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -477555,11 +493567,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -477570,11 +493582,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -477585,10 +493597,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -477599,13 +493611,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -477616,11 +493628,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -477631,11 +493643,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -477646,10 +493658,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -477660,13 +493672,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -477677,11 +493689,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -477692,7 +493704,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -477703,7 +493715,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -477714,11 +493726,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -477729,10 +493741,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -477743,13 +493755,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -477760,11 +493772,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -477775,14 +493787,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -477793,11 +493805,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -477808,11 +493820,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -477823,14 +493835,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -477841,13 +493853,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -477858,13 +493870,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -477875,13 +493887,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -477892,11 +493904,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -477907,14 +493919,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -477925,11 +493937,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -477940,14 +493952,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -477958,11 +493970,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -477973,11 +493985,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -477988,10 +494000,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -478002,7 +494014,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -478010,7 +494022,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -478021,14 +494033,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -478039,11 +494051,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -478054,10 +494066,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -478068,7 +494080,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -478077,7 +494089,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -478088,7 +494100,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -478099,7 +494111,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -478110,7 +494122,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -478124,7 +494136,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -478135,7 +494147,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -478147,7 +494159,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -478158,7 +494170,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -478171,7 +494183,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -478182,7 +494194,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -478193,7 +494205,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -478204,7 +494216,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -478217,7 +494229,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -478228,7 +494240,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -478239,7 +494251,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -478250,7 +494262,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -478262,7 +494274,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -478273,7 +494285,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -478283,7 +494295,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -478294,11 +494306,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -478309,11 +494321,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -478324,10 +494336,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -478338,11 +494350,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -478353,7 +494365,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -478362,7 +494374,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -478373,7 +494385,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -478382,7 +494394,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -478393,14 +494405,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -478411,7 +494423,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -478421,7 +494433,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -478432,14 +494444,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -478450,7 +494462,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -478461,7 +494473,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -478472,7 +494484,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -478482,7 +494494,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -478493,9 +494505,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -478504,7 +494516,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -478515,9 +494527,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -478525,7 +494537,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -478536,11 +494548,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -478551,13 +494563,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -478568,11 +494580,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -478583,10 +494595,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -478597,11 +494609,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -478612,13 +494624,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -478629,11 +494641,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -478644,13 +494656,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -478661,7 +494673,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -478671,7 +494683,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -478682,7 +494694,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -478691,7 +494703,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -478702,11 +494714,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -478717,13 +494729,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -478732,13 +494746,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -478747,13 +494761,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -478762,15 +494776,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -478779,11 +494791,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -478794,15 +494806,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -478811,16 +494821,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -478829,11 +494838,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -478844,15 +494853,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -478861,13 +494870,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -478876,12 +494888,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -478890,13 +494903,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -478907,13 +494920,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -478922,13 +494935,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -478937,13 +494949,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -478952,13 +494966,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -478967,15 +494981,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -478984,15 +494996,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -479001,15 +495011,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -479018,15 +495026,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -479035,7 +495043,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -479047,62 +495106,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -479111,12 +495117,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -479125,17 +495137,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -479144,16 +495155,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -479162,16 +495170,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -479180,13 +495184,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -479195,12 +495203,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -479209,15 +495221,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -479227,13 +495239,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -479242,13 +495254,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -479257,13 +495268,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -479272,16 +495286,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -479290,13 +495301,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -479305,15 +495316,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -479322,17 +495331,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -479341,18 +495349,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -479361,13 +495364,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -479376,12 +495381,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -479390,13 +495400,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -479405,15 +495420,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -479422,15 +495435,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -479439,15 +495449,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -479456,12 +495464,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -479470,13 +495481,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -479485,13 +495498,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -479500,15 +495515,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -479517,12 +495529,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -479532,13 +495544,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -479547,13 +495559,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -479562,13 +495576,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -479577,13 +495591,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -479592,13 +495606,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -479607,13 +495621,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -479622,18 +495636,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479646,9 +495705,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479661,9 +495720,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479676,9 +495735,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479691,9 +495750,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479706,9 +495765,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479721,9 +495780,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479736,9 +495795,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479751,9 +495810,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479766,9 +495825,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479781,9 +495840,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479796,9 +495855,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479811,9 +495870,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479826,9 +495885,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479841,9 +495900,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479856,9 +495915,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479871,9 +495930,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479886,9 +495945,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479901,9 +495960,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479916,9 +495975,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -479931,53 +495990,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
-    pub(crate) fn __reduce241<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
-    }
     pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
@@ -479985,13 +495999,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -480000,13 +496014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -480015,13 +496029,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -480030,15 +496044,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480051,9 +496125,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480061,14 +496135,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480081,9 +496155,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480096,9 +496170,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480111,9 +496185,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480126,9 +496200,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480136,14 +496210,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480151,14 +496225,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480166,14 +496240,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -480181,12 +496255,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub use self::__parse__Module::ModuleParser;
@@ -480256,22 +496330,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -480341,7 +496417,7 @@
         // State 32
         0, 0, 194, -111, 0, 0, -111, 195, -111, -111, -111, 0, 0, -111, 196, 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 33
-        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,
+        0, -169, -169, -169, -169, 50, -169, -169, -169, -169, -169, 0, 51, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 52, -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 34
         162, 0, 0, 36, 0, 37, 0, 38, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 111, 0, 0, 165, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 167,
         // State 35
@@ -480371,7 +496447,7 @@
         // State 47
         162, 0, 0, 36, 0, 37, 0, 38, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 111, 0, 0, 165, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 167,
         // State 48
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 51, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, 52, -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 49
         162, 0, 0, 36, 0, 37, -82, 38, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 111, 0, 0, 165, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 167,
         // State 50
@@ -480383,7 +496459,7 @@
         // State 53
         0, 0, 0, 180, 0, 0, 225, 0, 181, 0, 182, 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, 185, 0, 0, 0,
         // State 54
-        0, -166, -166, -166, -166, 50, -166, -166, -166, -166, -166, 0, 51, 0, -166, 0, 226, -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,
+        0, -169, -169, -169, -169, 50, -169, -169, -169, -169, -169, 0, 51, 0, -169, 0, 226, -169, -169, -169, 0, -169, -169, -169, 52, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 55
         0, 0, 0, 121, 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, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 56
@@ -480399,7 +496475,7 @@
         // 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, 111, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 62
-        162, 0, 0, 36, 0, 37, 0, 38, 0, 0, 163, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 111, 0, 0, 165, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 167,
+        162, 0, 0, 36, 0, 37, 0, 38, 0, 0, 163, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 111, 0, 0, 165, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 167,
         // State 63
         162, 0, 0, 36, 0, 37, 0, 38, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 111, 0, 0, 165, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 167,
         // State 64
@@ -480423,7 +496499,7 @@
         // 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,
         // State 74
-        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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, -169, 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
         162, 0, 0, 36, 0, 37, 0, 38, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 111, 0, 0, 165, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 167,
         // State 76
@@ -480431,7 +496507,7 @@
         // 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, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 78
-        0, 0, 0, 180, 0, 0, 0, 0, 181, 0, 182, 0, 0, 0, 0, 0, 0, -173, 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, 185, 0, 0, 0,
+        0, 0, 0, 180, 0, 0, 0, 0, 181, 0, 182, 0, 0, 0, 0, 0, 0, -176, 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, 185, 0, 0, 0,
         // State 79
         0, 0, 0, 180, 0, 0, 0, 0, 181, 0, 182, 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, 42, 185, 0, 0, 0,
         // State 80
@@ -480465,7 +496541,7 @@
         // State 94
         0, 0, 0, 121, 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, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 95
-        0, 0, 0, 180, 0, 0, 0, 0, 181, -188, 182, 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, 185, 0, -188, 0,
+        0, 0, 0, 180, 0, 0, 0, 0, 181, -191, 182, 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, 185, 0, -191, 0,
         // State 96
         162, 0, 0, 36, 0, 37, 0, 38, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 111, 0, 0, 165, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 167,
         // State 97
@@ -480479,15 +496555,15 @@
         // State 101
         0, 0, 0, 180, 0, 0, 0, 0, 181, 0, 182, 0, 0, 0, 0, 0, 0, -147, 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, 185, 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 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, -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 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, -166, 0, -166, -166, 0, 0, 0, 0, 0, 0, 0, -166, 0, -166, 0, 0, -166, 0, 0, 0, 0, 0, -166, 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, 0, -165, -165, 0, 0, 0, 0, 0, 0, 0, -165, 0, -165, 0, 0, -165, 0, 0, 0, 0, 0, -165, 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
@@ -480509,13 +496585,13 @@
         // 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, -197, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, -197, 0, -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, -197, 0, 0, -197, 0,
+        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,
         // 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 120
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 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, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 122
@@ -480541,15 +496617,15 @@
         // State 132
         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, -93, 0,
         // State 133
-        0, 0, 0, 0, 0, 0, -198, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, -198, 0, -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, -198, 0, 0, -198, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 39, 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 134
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 135
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 136
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 137
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 139
@@ -480577,7 +496653,7 @@
         // State 150
         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 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, -183, 0, -183, -183, 0, 0, 0, 0, 0, 0, 0, -183, 0, -183, 0, 0, -183, 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, -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 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, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
         // State 153
@@ -480587,27 +496663,27 @@
         // State 155
         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 156
-        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, -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 157
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, -220, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, -220, 0,
         // State 158
         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 159
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, -193, -193, 0, 0, -193, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, -193, 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 160
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 162
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 163
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, -215, -215, 0, 0, -215, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, -218, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, -218, 0,
         // State 164
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, -214, -214, 0, 0, -214, -214, -214, 0, -214, -214, -214, 0, -214, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, -214, 0,
+        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
         // State 165
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, -216, -216, 0, 0, -216, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, -219, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, -219, 0,
         // State 166
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 167
         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 168
@@ -480629,9 +496705,9 @@
         // 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, -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, 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, -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, -187, 0,
         // State 178
-        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 179
         -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 180
@@ -480667,7 +496743,7 @@
         // State 195
         -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 196
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, -172, -172, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, -172, 0,
         // State 197
         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 198
@@ -480687,9 +496763,9 @@
         // State 205
         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 206
-        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, -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 207
-        0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -175, -175, 0, 0, -175, 0, 0, 0, 0, -175, 0, 0, 0, -175, 0, 0, 0, -175, 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, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
         // State 208
         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 209
@@ -480699,7 +496775,7 @@
         // State 211
         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 212
-        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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 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 213
         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 214
@@ -480715,21 +496791,21 @@
         // State 219
         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 220
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, -173, -173, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, -173, 0,
         // State 221
         0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 222
-        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, -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 223
         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 224
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, -192, -192, 0, 0, -192, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, -192, 0,
+        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 225
         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 226
-        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, -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 227
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 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, -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
@@ -480737,17 +496813,17 @@
         // State 230
         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, -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, -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 232
-        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, -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 233
-        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, -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 234
         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, -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, 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, -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 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, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 238
@@ -480761,13 +496837,13 @@
         // 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, -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 243
-        0, 0, 0, 0, 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, 0, -182, -182, 0, 0, 0, 0, 0, 0, 0, -182, 0, -182, 0, 0, -182, 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, -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 244
         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 245
         -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 246
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, -171, -171, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, -171, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0,
         // State 248
@@ -480783,7 +496859,7 @@
         // State 253
         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 254
-        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, -218, -218, -218, 0, 0, -218, 0, 0, 0, 0, -218, 0, 0, 0, -218, 0, 0, 0, -218, 0,
+        0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 0,
         // State 255
         0, 0, 0, 0, 0, 0, 0, 0, 0, 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 256
@@ -480797,7 +496873,7 @@
         // State 260
         0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 261
-        0, 0, 0, 0, 0, 0, -187, 0, 0, -187, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 263
@@ -480811,7 +496887,7 @@
         // State 267
         0, 0, 0, 0, 0, 0, 0, 0, 0, 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 268
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 269
         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 270
@@ -481034,15 +497110,15 @@
         // State 101
         0,
         // State 102
-        -162,
-        // State 103
-        -161,
-        // State 104
         -164,
-        // State 105
-        -240,
-        // State 106
+        // State 103
         -163,
+        // State 104
+        -166,
+        // State 105
+        -243,
+        // State 106
+        -165,
         // State 107
         0,
         // State 108
@@ -481132,7 +497208,7 @@
         // State 150
         0,
         // State 151
-        -183,
+        -186,
         // State 152
         0,
         // State 153
@@ -481316,7 +497392,7 @@
         // State 242
         -131,
         // State 243
-        -182,
+        -185,
         // State 244
         0,
         // State 245
@@ -481513,32 +497589,32 @@
             },
             69 => 58,
             70 => 104,
-            71 => match state {
+            72 => match state {
                 0 => 105,
                 17 | 26 => 142,
                 _ => 126,
             },
-            72 => match state {
+            74 => match state {
                 41 | 58 => 209,
                 57 => 229,
                 _ => 157,
             },
-            73 => match state {
+            75 => match state {
                 48 => 220,
                 _ => 196,
             },
-            74 => 48,
-            76 => 210,
-            77 => match state {
+            76 => 48,
+            78 => 210,
+            79 => match state {
                 58 => 234,
                 _ => 211,
             },
-            78 => 106,
-            79 => match state {
+            80 => 106,
+            81 => match state {
                 21 => 150,
                 _ => 132,
             },
-            81 => match state {
+            83 => match state {
                 75 => 251,
                 85 => 263,
                 90 => 268,
@@ -481546,13 +497622,13 @@
                 100 => 274,
                 _ => 200,
             },
-            82 => match state {
+            84 => match state {
                 84 => 260,
                 _ => 249,
             },
-            84 => 158,
-            85 => 159,
-            86 => match state {
+            86 => 158,
+            87 => 159,
+            88 => match state {
                 40 => 56,
                 55 => 73,
                 66 => 81,
@@ -481565,14 +497641,14 @@
                 94 => 271,
                 _ => 129,
             },
-            88 => match state {
+            90 => match state {
                 13 => 134,
                 _ => 119,
             },
-            90 => 13,
-            91 => 34,
-            92 => 160,
-            93 => 212,
+            92 => 13,
+            93 => 34,
+            94 => 160,
+            95 => 212,
             _ => 0,
         }
     }
@@ -482814,25 +498890,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -482844,14 +498920,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -482863,19 +498939,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -482887,109 +498963,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -483001,109 +499077,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -483115,43 +499191,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -483163,220 +499239,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 113,
+                }
+            }
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            239 => __state_machine::SimulatedReduce::Accept,
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
-            242 => {
+            242 => __state_machine::SimulatedReduce::Accept,
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -484170,12 +500270,7 @@
                 __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             239 => {
-                // __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));
+                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             240 => {
                 __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -484184,7 +500279,12 @@
                 __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __ModuleStatement = ModuleStatement => ActionFn(38);
+                let __sym0 = __pop_Variant48(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action38::<>(__sym0);
+                return Some(Ok(__nt));
             }
             243 => {
                 __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -484225,6 +500325,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -484318,6 +500430,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -484328,13 +500450,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -484418,6 +500540,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -484438,13 +500570,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -484588,66 +500720,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -484658,13 +500790,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -484678,43 +500810,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -484728,13 +500860,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -484768,13 +500900,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -484828,13 +500960,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -484875,10 +501007,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -484889,11 +501021,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -484904,11 +501036,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -484919,13 +501051,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -484936,11 +501068,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -484951,10 +501083,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -484965,11 +501097,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -484980,10 +501112,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -484994,11 +501126,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -485009,10 +501141,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -485023,13 +501155,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -485040,13 +501172,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -485057,10 +501189,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -485071,14 +501203,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -485089,14 +501221,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -485107,10 +501239,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -485121,13 +501253,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -485138,13 +501270,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -485155,10 +501287,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -485169,14 +501301,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -485187,14 +501319,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -485205,10 +501337,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -485219,13 +501351,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -485236,10 +501368,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -485250,11 +501382,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -485265,13 +501397,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -485282,14 +501414,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -485300,13 +501432,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -485317,10 +501449,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -485331,11 +501463,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -485346,13 +501478,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -485363,14 +501495,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -485381,13 +501513,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -485398,10 +501530,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -485412,11 +501544,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -485427,13 +501559,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -485444,14 +501576,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -485462,13 +501594,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -485479,10 +501611,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -485493,11 +501625,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -485508,13 +501640,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -485525,14 +501657,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -485543,13 +501675,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -485560,10 +501692,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -485574,11 +501706,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -485589,13 +501721,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -485606,14 +501738,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -485624,13 +501756,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -485641,10 +501773,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -485655,11 +501787,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -485670,13 +501802,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -485687,14 +501819,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -485705,13 +501837,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -485722,10 +501854,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -485736,11 +501868,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -485751,13 +501883,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -485768,14 +501900,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -485786,10 +501918,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -485800,10 +501932,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -485814,14 +501946,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -485832,15 +501964,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -485851,14 +501983,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -485869,15 +502001,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -485888,11 +502020,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -485903,11 +502035,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -485918,11 +502050,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -485933,11 +502065,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -485948,11 +502080,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -485963,11 +502095,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -485978,11 +502110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -485993,11 +502125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -486008,11 +502140,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -486023,11 +502155,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -486038,11 +502170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -486053,11 +502185,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -486068,11 +502200,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -486083,11 +502215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -486098,11 +502230,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -486113,11 +502245,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -486128,14 +502260,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -486146,11 +502278,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -486161,10 +502293,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -486175,13 +502307,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -486192,11 +502324,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -486207,11 +502339,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -486222,10 +502354,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -486236,13 +502368,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -486253,11 +502385,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -486268,11 +502400,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -486283,10 +502415,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -486297,13 +502429,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -486314,11 +502446,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -486329,11 +502461,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -486344,10 +502476,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -486358,13 +502490,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -486375,11 +502507,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -486390,11 +502522,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -486405,10 +502537,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -486419,13 +502551,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -486436,11 +502568,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -486451,11 +502583,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -486466,10 +502598,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -486480,13 +502612,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -486497,11 +502629,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -486512,7 +502644,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -486523,7 +502655,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -486534,11 +502666,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -486549,10 +502681,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -486563,13 +502695,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -486580,11 +502712,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -486595,14 +502727,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -486613,11 +502745,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -486628,11 +502760,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -486643,14 +502775,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -486661,13 +502793,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -486678,13 +502810,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -486695,13 +502827,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -486712,11 +502844,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -486727,14 +502859,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -486745,11 +502877,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -486760,14 +502892,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -486778,11 +502910,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -486793,11 +502925,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -486808,10 +502940,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -486822,7 +502954,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -486830,7 +502962,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -486841,14 +502973,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -486859,11 +502991,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -486874,10 +503006,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -486888,7 +503020,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -486897,7 +503029,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -486908,7 +503040,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -486919,7 +503051,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -486930,7 +503062,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -486944,7 +503076,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -486955,7 +503087,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -486967,7 +503099,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -486978,7 +503110,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -486991,7 +503123,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -487002,7 +503134,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -487013,7 +503145,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -487024,7 +503156,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -487037,7 +503169,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -487048,7 +503180,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -487059,7 +503191,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -487070,7 +503202,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -487082,7 +503214,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -487093,7 +503225,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -487103,7 +503235,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -487114,11 +503246,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -487129,11 +503261,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -487144,10 +503276,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -487158,11 +503290,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -487173,7 +503305,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -487182,7 +503314,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -487193,7 +503325,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -487202,7 +503334,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -487213,14 +503345,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -487231,7 +503363,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -487241,7 +503373,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -487252,14 +503384,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -487270,7 +503402,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -487281,7 +503413,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -487292,7 +503424,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -487302,7 +503434,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -487313,9 +503445,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -487324,7 +503456,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -487335,9 +503467,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -487345,7 +503477,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -487356,11 +503488,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -487371,13 +503503,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -487388,11 +503520,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -487403,10 +503535,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -487417,11 +503549,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -487432,13 +503564,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -487449,11 +503581,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -487464,13 +503596,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -487481,7 +503613,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -487491,7 +503623,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -487502,7 +503634,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -487511,7 +503643,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -487522,11 +503654,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -487537,13 +503669,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -487552,13 +503686,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -487567,13 +503701,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -487582,15 +503716,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -487599,11 +503731,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -487614,15 +503746,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -487631,16 +503761,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -487649,11 +503778,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -487664,15 +503793,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -487681,13 +503810,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -487696,12 +503828,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -487710,13 +503843,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -487727,13 +503860,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -487742,13 +503875,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -487757,13 +503889,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -487772,13 +503906,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -487787,15 +503921,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -487804,15 +503936,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -487821,15 +503951,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -487838,15 +503966,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -487855,7 +503983,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -487867,62 +504046,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -487931,12 +504057,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -487945,17 +504077,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -487964,16 +504095,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -487982,16 +504110,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -488000,13 +504124,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -488015,12 +504143,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -488029,15 +504161,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -488047,13 +504179,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -488062,13 +504194,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -488077,13 +504208,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -488092,16 +504226,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -488110,13 +504241,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -488125,15 +504256,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -488142,17 +504271,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -488161,18 +504289,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -488181,13 +504304,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -488196,12 +504321,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -488210,13 +504340,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -488225,15 +504360,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -488242,15 +504375,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -488259,15 +504389,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -488276,12 +504404,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -488290,13 +504421,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -488305,13 +504438,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -488320,15 +504455,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -488337,12 +504469,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -488352,13 +504484,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -488367,13 +504499,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -488382,13 +504516,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -488397,13 +504531,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -488412,13 +504546,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -488427,13 +504561,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -488442,18 +504576,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488466,9 +504645,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488481,9 +504660,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488496,9 +504675,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488511,9 +504690,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488526,9 +504705,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488541,9 +504720,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488556,9 +504735,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488571,9 +504750,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488586,9 +504765,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488601,9 +504780,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488616,9 +504795,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488631,9 +504810,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488646,9 +504825,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488661,9 +504840,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488676,9 +504855,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488691,9 +504870,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488706,9 +504885,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488721,9 +504900,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488736,9 +504915,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488751,37 +504930,7 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
+        (1, 115)
     }
     pub(crate) fn __reduce241<
     >(
@@ -488790,28 +504939,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
-    }
-    pub(crate) fn __reduce242<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce243<
     >(
@@ -488820,13 +504954,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -488835,13 +504969,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -488850,15 +504984,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488871,9 +505065,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488881,14 +505075,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488901,9 +505095,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488916,9 +505110,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488931,9 +505125,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -488946,7 +505140,8904 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
+    }
+    pub(crate) fn __reduce256<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant60(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action1::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
+    }
+    pub(crate) fn __reduce257<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __UnaryOp = UnaryOp => ActionFn(26);
+        let __sym0 = __pop_Variant62(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action26::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
+    }
+    pub(crate) fn __reduce258<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ValueExpr = ValueExpr => ActionFn(27);
+        let __sym0 = __pop_Variant63(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action27::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
+    }
+    pub(crate) fn __reduce259<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __WhileStmt = WhileStmt => ActionFn(13);
+        let __sym0 = __pop_Variant64(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action13::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
+    }
+}
+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__Modules {
+
+    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(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(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, 3, 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, 3, 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, 108, 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, 7, 0, 115, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 116, 0, 0, 9, 10, 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, 7, 0, 115, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 116, 0, 0, 9, 10, 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, 7, 0, 115, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 116, 0, 0, 9, 0, 0, 0, 0, 0, 119, 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, 108, 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, 108, 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, 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, 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, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 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, 7, 0, 115, 8, 0, 0, 0, 0, 0, 0, 0, 3, 0, 116, 0, 0, 9, 0, 0, 0, 0, 0, 126, 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, 108, 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, 108, 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, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0,
+        // State 14
+        0, 0, 0, 135, 0, 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, 108, 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, -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, 108, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 17
+        0, 0, 0, 135, 0, 0, 0, 136, 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, 108, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 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, 0, 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, -90, 0,
+        // State 20
+        0, 0, 0, 135, 0, 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, 108, 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, -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, 108, 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, -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, 108, 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, -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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 24
+        0, 0, 0, 135, 0, 0, 0, 136, 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, 108, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
+        // State 27
+        0, 0, 0, 135, 0, 0, 0, 136, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 28
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 29
+        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, 45, 0, 0, 0, 0,
+        // State 30
+        0, 0, 0, 135, 0, 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, 108, 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, -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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 32
+        0, 0, 0, 135, 0, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 33
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0,
+        // State 34
+        0, 197, -121, -121, 198, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 199, 200, 0, 201, 202, 203, 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, 204, -121, 0,
+        // State 35
+        0, 0, 205, -111, 0, 0, -111, 206, -111, -111, -111, 0, 0, -111, 207, 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
+        0, -169, -169, -169, -169, 52, -169, -169, -169, -169, -169, 0, 53, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 54, -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 37
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 38
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 55, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 39
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 40
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 41
+        0, 0, 0, 135, 0, 0, 0, 136, 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, 108, 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, 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, 45, 0, 0, 0, 0,
+        // State 43
+        0, 0, 0, 135, 0, 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, 108, 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, 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, 62, 108, 63, 0, 0, 64, 0, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 0, 0,
+        // State 45
+        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, 0, 0, 0, 0, 0, 0, 45, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
+        // State 47
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 48
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 49
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 50
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 53, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, 54, -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 51
+        175, 0, 0, 39, 0, 40, -82, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 53
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 54
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 55
+        0, 0, 0, 191, 0, 0, 233, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0,
+        // State 56
+        0, -169, -169, -169, -169, 52, -169, -169, -169, -169, -169, 0, 53, 0, -169, 0, 234, -169, -169, -169, 0, -169, -169, -169, 54, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
+        // State 57
+        0, 0, 0, 135, 0, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 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, 0, 0, 45, 0, 0, 0, 0,
+        // State 59
+        0, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 60
+        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, 62, 108, 63, 0, 0, 64, 0, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 244, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 62
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 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, 108, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 64
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 65
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 66
+        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, 0, 45, 0, 0, 0, 0,
+        // State 67
+        0, 0, 0, 135, 0, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 68
+        0, 0, 205, -110, 0, 0, -110, 206, -110, -110, -110, 0, 0, -110, 207, 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 69
+        0, 197, -120, -120, 198, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 199, 200, 0, 201, 202, 203, 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, 204, -120, 0,
+        // State 70
+        175, 0, 0, 39, 0, 40, -84, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 71
+        0, 0, 0, 191, 0, 0, -81, 0, 192, 251, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0,
+        // State 72
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 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, 45, 0, 0, 0, 0,
+        // State 75
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, -169, 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,
+        // State 76
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 77
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 196, 0, 0, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 79
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0,
+        // State 80
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 196, 0, 0, 0,
+        // State 81
+        0, 0, 0, 135, 0, 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, 108, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0,
+        // State 83
+        0, 0, 0, 191, 0, 0, -83, 0, 192, 262, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0,
+        // State 84
+        0, 0, 0, 135, 0, 0, 0, 136, 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, 108, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        // State 86
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 87
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0,
+        // State 88
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 89
+        0, 0, 0, 135, 0, 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, 108, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0,
+        // State 91
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 92
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0,
+        // State 93
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 196, 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, 45, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, 135, 0, 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, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 191, 0, 0, 0, 0, 192, -191, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, -191, 0,
+        // State 97
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 98
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 99
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 196, 0, 0, 0,
+        // State 100
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0,
+        // State 101
+        175, 0, 0, 39, 0, 40, 0, 41, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 108, 0, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 180,
+        // State 102
+        0, 0, 0, 191, 0, 0, 0, 0, 192, 0, 193, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 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, 0, 0, 0, 0, 0, 0, 0, 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, -162, 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, 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 107
+        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 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, -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, 0, 0, 0, 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 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, -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 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, -166, 0, -166, -166, 0, 0, 0, 0, 0, 0, 0, -166, 0, -166, 0, 0, -166, 0, 0, 0, 0, 0, -166, 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, -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 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, -165, 0, -165, -165, 0, 0, 0, 0, 0, 0, 0, -165, 0, -165, 0, 0, -165, 0, 0, 0, 0, 0, -165, 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, 0, 0, 0, 12, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 13, 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, 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 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, -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 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, -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 119
+        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,
+        // State 120
+        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,
+        // 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, 0, 0, 0, 17, 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, 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, 19, 0, 0, 0, 0,
+        // State 123
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 20, 0, 0, 0, 0,
+        // State 124
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, -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 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, -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 126
+        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, 0, 0,
+        // State 127
+        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, 0, 0,
+        // State 128
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, -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 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, -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 130
+        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 131
+        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, -200, 0,
+        // State 132
+        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,
+        // State 133
+        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, 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,
+        // State 134
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 151, 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, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 136
+        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, 0, 0, 0,
+        // State 137
+        0, 0, 0, 0, 0, 0, -85, 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, 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, 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 139
+        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, 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, 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 141
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 0,
+        // State 143
+        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,
+        // State 144
+        0, 0, 0, 0, 0, 0, 0, 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, -93, 0,
+        // State 145
+        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 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, 165, 0,
+        // State 147
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -89, 0,
+        // State 148
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 42, 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 149
+        0, 0, 0, -213, 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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 150
+        0, 0, 0, -207, 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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 151
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 152
+        0, 0, 0, -209, 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, 0, -209, 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, 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,
+        // State 154
+        0, 0, 0, 0, 0, 0, -87, 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,
+        // State 155
+        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 156
+        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,
+        // State 157
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 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 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, 47, 0, 0, 0, 0,
+        // State 159
+        0, 0, 0, -56, 0, 0, 0, -56, 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 160
+        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, -95, 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, 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 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, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
+        // State 163
+        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, -91, 0,
+        // State 164
+        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,
+        // 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, 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 166
+        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,
+        // State 167
+        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 168
+        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 169
+        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 170
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, -220, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, -220, 0,
+        // State 171
+        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 172
+        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 173
+        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 174
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
+        // State 175
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
+        // State 176
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, -218, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, -218, 0,
+        // State 177
+        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
+        // State 178
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, -219, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, -219, 0,
+        // State 179
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
+        // State 180
+        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 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, -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 182
+        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 183
+        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 184
+        0, 0, 0, -57, 0, 0, 0, -57, 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 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, 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 186
+        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0,
+        // State 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, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0,
+        // State 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, -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 189
+        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 190
+        -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 191
+        -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 192
+        -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 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, -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 194
+        -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 195
+        -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 196
+        -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 197
+        -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 198
+        -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 199
+        -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 200
+        -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 201
+        -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 202
+        -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 203
+        -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 204
+        -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 205
+        -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 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 207
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, -172, -172, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, -172, 0,
+        // State 208
+        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 209
+        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 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, 74, 0, 0, 0, 0,
+        // State 211
+        0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 212
+        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 213
+        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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 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, 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 215
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 216
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+        // State 217
+        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 218
+        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 219
+        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,
+        // State 220
+        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 221
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
+        // State 222
+        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 223
+        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 224
+        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 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, -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 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0,
+        // State 227
+        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 228
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, -173, -173, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, -173, 0,
+        // State 229
+        0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 230
+        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 231
+        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 232
+        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 233
+        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, 0,
+        // State 234
+        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 235
+        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 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, -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 237
+        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,
+        // State 238
+        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 239
+        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 240
+        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 241
+        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 242
+        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 243
+        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 244
+        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 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, 0, 0, 0, 0, 0, 0, 0, 89, 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, 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 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, -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 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, -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 249
+        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 250
+        -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 251
+        0, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, -171, -171, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, -171, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, 0,
+        // State 253
+        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, 0, 0, 0, 0, 0, 0, 0,
+        // State 254
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 255
+        0, 0, 0, 0, 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 256
+        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 257
+        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, 95, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
+        // State 258
+        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, 0, 0,
+        // State 259
+        0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 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, -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 261
+        -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 262
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 0, 0, 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, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 264
+        0, 0, 0, 0, 0, 0, -190, 0, 0, -190, 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, -190, 0,
+        // State 265
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 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 266
+        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 267
+        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,
+        // State 268
+        0, 0, 0, 0, 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 269
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 270
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 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 271
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
+        // State 272
+        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 273
+        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 274
+        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, 0, 0,
+        // State 275
+        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 276
+        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 277
+        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]
+    }
+    const __EOF_ACTION: &[i16] = &[
+        // State 0
+        0,
+        // State 1
+        -167,
+        // 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
+        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
+        -161,
+        // State 104
+        -244,
+        // State 105
+        -162,
+        // 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
+        -160,
+        // State 119
+        0,
+        // State 120
+        0,
+        // State 121
+        0,
+        // State 122
+        0,
+        // State 123
+        0,
+        // State 124
+        0,
+        // State 125
+        -159,
+        // 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,
+        // State 265
+        0,
+        // State 266
+        0,
+        // State 267
+        0,
+        // State 268
+        0,
+        // State 269
+        0,
+        // State 270
+        0,
+        // State 271
+        0,
+        // State 272
+        0,
+        // State 273
+        0,
+        // State 274
+        0,
+        // State 275
+        0,
+        // State 276
+        0,
+        // State 277
+        0,
+    ];
+    fn __goto(state: i16, nt: usize) -> i16 {
+        match nt {
+            1 => 59,
+            15 => 70,
+            18 => 22,
+            21 => 26,
+            24 => 13,
+            27 => 25,
+            30 => 85,
+            33 => 24,
+            36 => 215,
+            37 => 48,
+            38 => 49,
+            39 => 47,
+            40 => match state {
+                42 => 214,
+                45 => 225,
+                58 => 236,
+                66 => 247,
+                74 => 255,
+                77 => 257,
+                80 => 259,
+                82 => 260,
+                90 => 268,
+                93 => 272,
+                94 => 273,
+                99 => 276,
+                _ => 181,
+            },
+            41 => 229,
+            42 => match state {
+                21 => 153,
+                23 => 156,
+                31 => 183,
+                _ => 136,
+            },
+            43 => 146,
+            44 => match state {
+                46 => 226,
+                _ => 142,
+            },
+            45 => 252,
+            46 => match state {
+                27 => 166,
+                41 => 213,
+                84 => 262,
+                _ => 140,
+            },
+            47 => 108,
+            48 => 123,
+            49 => match state {
+                39 => 55,
+                51 => 71,
+                53 => 72,
+                62 => 77,
+                64 => 79,
+                65 => 80,
+                70 => 83,
+                76 => 87,
+                86 => 92,
+                88 => 93,
+                91 => 96,
+                97 => 99,
+                98 => 100,
+                101 => 102,
+                _ => 33,
+            },
+            50 => 167,
+            51 => match state {
+                37 => 208,
+                38 => 209,
+                40 => 212,
+                48 => 227,
+                54 => 231,
+                _ => 168,
+            },
+            52 => match state {
+                49 => 69,
+                _ => 34,
+            },
+            53 => match state {
+                47 => 68,
+                _ => 35,
+            },
+            55 => match state {
+                44 | 60 => 216,
+                _ => 169,
+            },
+            56 => match state {
+                22 => 154,
+                _ => 137,
+            },
+            58 => 217,
+            59 => 109,
+            60 => match state {
+                28 | 37..=38 | 40 | 44 | 47..=49 | 51 | 53..=54 | 60 | 62 | 64..=65 | 70 | 88 | 97 => 36,
+                39 | 76 | 86 | 91 | 98 | 101 => 56,
+                59 => 75,
+                2 => 106,
+                6 => 119,
+                7 => 120,
+                8 => 122,
+                9 => 124,
+                11 => 126,
+                12 => 127,
+                13 => 128,
+                15 | 21..=23 | 31 => 138,
+                16 => 139,
+                18 | 25 | 46 => 143,
+                19 => 147,
+                20 => 148,
+                26 => 163,
+                52 => 230,
+                61 => 245,
+                63 => 246,
+                73 | 85 => 253,
+                78 => 258,
+                _ => 131,
+            },
+            62 => 210,
+            63 => 218,
+            64 => match state {
+                4 => 116,
+                _ => 110,
+            },
+            65 => 219,
+            66 => 4,
+            68 => match state {
+                4 => 10,
+                _ => 5,
+            },
+            69 => 60,
+            70 => match state {
+                0 => 103,
+                1 => 105,
+                _ => 111,
+            },
+            71 => 1,
+            72 => match state {
+                3..=4 => 112,
+                _ => 117,
+            },
+            73 => 104,
+            74 => match state {
+                44 | 60 => 220,
+                59 => 237,
+                _ => 170,
+            },
+            75 => match state {
+                50 => 228,
+                _ => 207,
+            },
+            76 => 50,
+            78 => 221,
+            79 => match state {
+                60 => 242,
+                _ => 222,
+            },
+            80 => 113,
+            81 => match state {
+                25 => 160,
+                _ => 144,
+            },
+            83 => match state {
+                76 => 256,
+                86 => 266,
+                91 => 271,
+                98 => 275,
+                101 => 277,
+                _ => 211,
+            },
+            84 => match state {
+                85 => 263,
+                _ => 254,
+            },
+            86 => 171,
+            87 => 172,
+            88 => match state {
+                43 => 58,
+                57 => 74,
+                67 => 82,
+                81 => 90,
+                14 => 132,
+                24 => 157,
+                30 => 182,
+                32 => 186,
+                89 => 267,
+                95 => 274,
+                _ => 141,
+            },
+            90 => match state {
+                20 => 149,
+                _ => 133,
+            },
+            92 => 20,
+            93 => 37,
+            94 => 173,
+            95 => 223,
+            _ => 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 = Vec<ast::Module>;
+        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: 2,
+                    nonterminal_produced: 71,
+                }
+            }
+            162 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 72,
+                }
+            }
+            163 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 72,
+                }
+            }
+            164 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 72,
+                }
+            }
+            165 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 72,
+                }
+            }
+            166 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 73,
+                }
+            }
+            167 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
+                }
+            }
+            168 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 74,
+                }
+            }
+            169 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 75,
+                }
+            }
+            170 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 75,
+                }
+            }
+            171 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
+                }
+            }
+            172 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 76,
+                }
+            }
+            173 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
+                }
+            }
+            174 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 77,
+                }
+            }
+            175 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
+                }
+            }
+            176 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 78,
+                }
+            }
+            177 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
+                }
+            }
+            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: 2,
+                    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: 8,
+                    nonterminal_produced: 80,
+                }
+            }
+            185 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
+                }
+            }
+            186 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 81,
+                }
+            }
+            187 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 82,
+                }
+            }
+            188 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
+                }
+            }
+            189 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 4,
+                    nonterminal_produced: 83,
+                }
+            }
+            190 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
+                }
+            }
+            191 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
+                }
+            }
+            192 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
+                }
+            }
+            193 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 85,
+                }
+            }
+            194 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
+                }
+            }
+            195 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
+                }
+            }
+            196 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
+                }
+            }
+            197 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
+                }
+            }
+            198 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
+                }
+            }
+            199 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
+                }
+            }
+            200 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
+                }
+            }
+            201 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 4,
+                    nonterminal_produced: 88,
+                }
+            }
+            202 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 5,
+                    nonterminal_produced: 88,
+                }
+            }
+            203 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
+                }
+            }
+            204 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 89,
+                }
+            }
+            205 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            208 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            209 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    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: 92,
+                }
+            }
+            212 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
+                }
+            }
+            213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 93,
+                }
+            }
+            214 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 93,
+                }
+            }
+            215 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 93,
+                }
+            }
+            216 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
+                }
+            }
+            217 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
+                }
+            }
+            218 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
+                }
+            }
+            219 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
+                }
+            }
+            220 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
+                }
+            }
+            221 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 96,
+                }
+            }
+            222 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 97,
+                }
+            }
+            223 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 98,
+                }
+            }
+            224 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 99,
+                }
+            }
+            225 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 100,
+                }
+            }
+            226 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 101,
+                }
+            }
+            227 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 102,
+                }
+            }
+            228 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 103,
+                }
+            }
+            229 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 104,
+                }
+            }
+            230 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 105,
+                }
+            }
+            231 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 106,
+                }
+            }
+            232 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 107,
+                }
+            }
+            233 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 108,
+                }
+            }
+            234 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 109,
+                }
+            }
+            235 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 110,
+                }
+            }
+            236 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 111,
+                }
+            }
+            237 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 112,
+                }
+            }
+            238 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 113,
+                }
+            }
+            239 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 114,
+                }
+            }
+            240 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 115,
+                }
+            }
+            241 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 116,
+                }
+            }
+            242 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 117,
+                }
+            }
+            243 => __state_machine::SimulatedReduce::Accept,
+            244 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 119,
+                }
+            }
+            245 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 120,
+                }
+            }
+            246 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 121,
+                }
+            }
+            247 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 122,
+                }
+            }
+            248 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 123,
+                }
+            }
+            249 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 124,
+                }
+            }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 125,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 126,
+                }
+            }
+            252 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 127,
+                }
+            }
+            253 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 128,
+                }
+            }
+            254 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            255 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
+            256 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 131,
+                }
+            }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
+            _ => panic!("invalid reduction index {}", __reduce_index)
+        }
+    }
+    pub struct ModulesParser {
+        _priv: (),
+    }
+
+    impl ModulesParser {
+        pub fn new() -> ModulesParser {
+            ModulesParser {
+                _priv: (),
+            }
+        }
+
+        #[allow(dead_code)]
+        pub fn parse<
+            __TOKEN: __ToTriple<>,
+            __TOKENS: IntoIterator<Item=__TOKEN>,
+        >(
+            &self,
+            __tokens0: __TOKENS,
+        ) -> Result<Vec<ast::Module>, __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<Vec<ast::Module>,__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 => {
+                // __Modules = Modules => ActionFn(36);
+                let __sym0 = __pop_Variant49(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action36::<>(__sym0);
+                return Some(Ok(__nt));
+            }
+            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 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            252 => {
+                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            253 => {
+                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            254 => {
+                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            255 => {
+                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            _ => 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_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__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_Variant52<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::PathSegment>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant52(__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_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__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_Variant61<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant61(__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_Variant48<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::ModuleStatement, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathSegment, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant51(__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::TypeQualifier, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::ValueExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant64<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::WhileStmt, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant64(__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_Variant53<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant53(__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_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(157);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action157::<>(&__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(158);
+        let __sym0 = __pop_Variant4(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action158::<>(__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(181);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action181::<>(__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(182);
+        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::__action182::<>(__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(147);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action147::<>(__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(148);
+        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);
+        __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(159);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action159::<>(__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(160);
+        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);
+        __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(149);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action149::<>(__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(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::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(145);
+        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::__action145::<>(__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(234);
+        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::__action234::<>(__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(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::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(142);
+        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::__action142::<>(__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(243);
+        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::__action243::<>(__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(141);
+        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);
+        __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(154);
+        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::__action154::<>(__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(246);
+        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::__action246::<>(__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(153);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action153::<>(&__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(136);
+        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::__action136::<>(__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(249);
+        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::__action249::<>(__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(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::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(180);
+        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::__action180::<>(__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(178);
+        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);
+        __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(179);
+        let __sym0 = __pop_Variant15(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action179::<>(__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(252);
+        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::__action252::<>(__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(253);
+        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::__action253::<>(__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(192);
+        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::__action192::<>(__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(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::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(191);
+        let __sym0 = __pop_Variant17(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action191::<>(__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(256);
+        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::__action256::<>(__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(257);
+        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::__action257::<>(__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(205);
+        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::__action205::<>(__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(203);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action203::<>(&__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(204);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action204::<>(__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(260);
+        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::__action260::<>(__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(261);
+        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::__action261::<>(__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(200);
+        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::__action200::<>(__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(198);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action198::<>(&__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(199);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action199::<>(__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(264);
+        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::__action264::<>(__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(265);
+        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::__action265::<>(__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(197);
+        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::__action197::<>(__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(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::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(196);
+        let __sym0 = __pop_Variant21(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action196::<>(__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(268);
+        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::__action268::<>(__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(269);
+        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::__action269::<>(__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(187);
+        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::__action187::<>(__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(185);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action185::<>(&__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(186);
+        let __sym0 = __pop_Variant23(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action186::<>(__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(272);
+        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::__action272::<>(__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(273);
+        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::__action273::<>(__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(177);
+        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::__action177::<>(__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(175);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action175::<>(&__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(176);
+        let __sym0 = __pop_Variant24(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action176::<>(__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(276);
+        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::__action276::<>(__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(277);
+        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::__action277::<>(__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(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::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(169);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action169::<>(&__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(347);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant14(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action347::<>(__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(348);
+        assert!(__symbols.len() >= 4);
+        let __sym3 = __pop_Variant14(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant4(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym3.2;
+        let __nt = super::__action348::<>(__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(349);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action349::<>(__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(350);
+        assert!(__symbols.len() >= 4);
+        let __sym3 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant4(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym3.2;
+        let __nt = super::__action350::<>(__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(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, 37)
+    }
+    pub(crate) fn __reduce64<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = "!=" => 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, 37)
+    }
+    pub(crate) fn __reduce65<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = "<" => 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, 37)
+    }
+    pub(crate) fn __reduce66<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = ">" => 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, 37)
+    }
+    pub(crate) fn __reduce67<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = "<=" => 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, 37)
+    }
+    pub(crate) fn __reduce68<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action356::<>(__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(357);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action357::<>(__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(358);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action358::<>(__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(359);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action359::<>(__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(360);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action360::<>(__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(361);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action361::<>(__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(362);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action362::<>(__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(363);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action363::<>(__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(364);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action364::<>(__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(365);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action365::<>(__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(366);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action366::<>(__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(367);
+        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::__action367::<>(__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(414);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action414::<>(__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(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::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(416);
+        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::__action416::<>(__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(417);
+        let __sym0 = __pop_Variant15(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action417::<>(__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(420);
+        let __sym0 = __pop_Variant16(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action420::<>(__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(421);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action421::<>(&__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(422);
+        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::__action422::<>(__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(423);
+        let __sym0 = __pop_Variant17(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action423::<>(__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(424);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action424::<>(__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(425);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action425::<>(&__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(426);
+        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::__action426::<>(__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(427);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action427::<>(__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(436);
+        let __sym0 = __pop_Variant20(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action436::<>(__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(437);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action437::<>(&__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(438);
+        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::__action438::<>(__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(439);
+        let __sym0 = __pop_Variant21(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action439::<>(__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(440);
+        let __sym0 = __pop_Variant22(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action440::<>(__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(441);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action441::<>(&__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(442);
+        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::__action442::<>(__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(443);
+        let __sym0 = __pop_Variant23(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action443::<>(__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(444);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action444::<>(__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(445);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action445::<>(&__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(446);
+        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::__action446::<>(__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(447);
+        let __sym0 = __pop_Variant24(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action447::<>(__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(368);
+        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::__action368::<>(__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(428);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action428::<>(__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(429);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action429::<>(&__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(430);
+        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::__action430::<>(__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(431);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action431::<>(__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(86);
+        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::__action86::<>(__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(87);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action87::<>(__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(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, 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(369);
+        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::__action369::<>(__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(370);
+        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::__action370::<>(__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(371);
+        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::__action371::<>(__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(80);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action80::<>(__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(81);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action81::<>(__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(82);
+        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::__action82::<>(__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(83);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action83::<>(__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(84);
+        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::__action84::<>(__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(85);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action85::<>(__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(155);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action155::<>(__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(156);
+        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);
+        __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(372);
+        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::__action372::<>(__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(373);
+        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::__action373::<>(__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(188);
+        let __sym0 = __pop_Variant16(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action188::<>(__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(189);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action189::<>(&__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(374);
+        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::__action374::<>(__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(375);
+        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::__action375::<>(__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(376);
+        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::__action376::<>(__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(377);
+        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::__action377::<>(__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(378);
+        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::__action378::<>(__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(379);
+        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::__action379::<>(__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(380);
+        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::__action380::<>(__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(381);
+        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::__action381::<>(__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(382);
+        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::__action382::<>(__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(383);
+        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::__action383::<>(__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(384);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action384::<>(__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(201);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action201::<>(__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(202);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action202::<>(&__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(385);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action385::<>(__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(386);
+        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::__action386::<>(__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(387);
+        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::__action387::<>(__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(388);
+        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::__action388::<>(__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(389);
+        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::__action389::<>(__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(390);
+        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::__action390::<>(__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(391);
+        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::__action391::<>(__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(392);
+        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::__action392::<>(__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(393);
+        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::__action393::<>(__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(394);
+        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::__action394::<>(__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(130);
+        let __sym0 = __pop_Variant40(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action130::<>(__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(131);
+        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::__action131::<>(__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(128);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action128::<>(__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(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::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(126);
+        let __sym0 = __pop_Variant48(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action126::<>(__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(127);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action127::<>(__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(162);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action162::<>(__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(163);
+        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::__action163::<>(__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(432);
+        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::__action432::<>(__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(433);
+        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::__action433::<>(__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)
+    {
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action132::<>(__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)
+    {
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (2, 71)
+    }
+    pub(crate) fn __reduce162<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action122::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
+    }
+    pub(crate) fn __reduce163<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action123::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
+    }
+    pub(crate) fn __reduce164<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
+    }
+    pub(crate) fn __reduce165<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action125::<>(__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)
+    {
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 73)
+    }
+    pub(crate) fn __reduce167<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
+    }
+    pub(crate) fn __reduce168<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action435::<>(__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)
+    {
+        // PathSegment = ".", Ident => ActionFn(51);
+        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::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
+    }
+    pub(crate) fn __reduce170<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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::__action397::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (3, 75)
+    }
+    pub(crate) fn __reduce171<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
+    }
+    pub(crate) fn __reduce172<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action50::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
+    }
+    pub(crate) fn __reduce173<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
+    }
+    pub(crate) fn __reduce174<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (0, 77)
+    }
+    pub(crate) fn __reduce175<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        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::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
+    }
+    pub(crate) fn __reduce176<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
+    }
+    pub(crate) fn __reduce177<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
+    }
+    pub(crate) fn __reduce178<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__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 = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__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 = LetStmt, ";" => ActionFn(57);
+        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::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
+    }
+    pub(crate) fn __reduce181<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
+        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::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
+    }
+    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<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
+    }
+    pub(crate) fn __reduce186<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructField = Ident, ":", Type => ActionFn(401);
+        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::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
+    }
+    pub(crate) fn __reduce187<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
+    }
+    pub(crate) fn __reduce188<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
+    }
+    pub(crate) fn __reduce189<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
+    }
+    pub(crate) fn __reduce190<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
+    }
+    pub(crate) fn __reduce191<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
+        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::__action404::<>(__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? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
+    }
+    pub(crate) fn __reduce193<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
+    }
+    pub(crate) fn __reduce194<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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::__action74::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 86)
+    }
+    pub(crate) fn __reduce195<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 86)
+    }
+    pub(crate) fn __reduce196<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
+    }
+    pub(crate) fn __reduce197<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__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 = "(", StructInitExpr, ")" => ActionFn(73);
+        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::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
+    }
+    pub(crate) fn __reduce199<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 88)
+    }
+    pub(crate) fn __reduce200<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__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, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
+    }
+    pub(crate) fn __reduce202<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__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? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
+    }
+    pub(crate) fn __reduce204<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
+    }
+    pub(crate) fn __reduce205<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
+    }
+    pub(crate) fn __reduce206<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
+    }
+    pub(crate) fn __reduce207<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        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::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
+    }
+    pub(crate) fn __reduce208<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        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::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
+    }
+    pub(crate) fn __reduce209<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
+    }
+    pub(crate) fn __reduce210<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action168::<>(__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)
+    {
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
+    }
+    pub(crate) fn __reduce212<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
+    }
+    pub(crate) fn __reduce213<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
+    }
+    pub(crate) fn __reduce214<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__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)
+    {
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
+    }
+    pub(crate) fn __reduce216<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce217<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
+        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::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
+    }
+    pub(crate) fn __reduce221<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __AssignStmt = AssignStmt => ActionFn(11);
+        let __sym0 = __pop_Variant26(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action11::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant26(__nt), __end));
+        (1, 96)
+    }
+    pub(crate) fn __reduce222<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => 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, 97)
+    }
+    pub(crate) fn __reduce223<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __BinarySecondLvlOp = BinarySecondLvlOp => 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, 98)
+    }
+    pub(crate) fn __reduce224<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(25);
+        let __sym0 = __pop_Variant27(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action25::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 99)
+    }
+    pub(crate) fn __reduce225<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Block = Block => ActionFn(7);
+        let __sym0 = __pop_Variant10(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action7::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant10(__nt), __end));
+        (1, 100)
+    }
+    pub(crate) fn __reduce226<
+    >(
+        __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, 101)
+    }
+    pub(crate) fn __reduce227<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression = Expression => ActionFn(22);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action22::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 102)
+    }
+    pub(crate) fn __reduce228<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression0 = Expression0 => 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, 103)
+    }
+    pub(crate) fn __reduce229<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression1 = Expression1 => 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, 104)
+    }
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression2 = Expression2 => 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, 105)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression3 = Expression3 => 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, 106)
+    }
+    pub(crate) fn __reduce232<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __FnCallExpr = FnCallExpr => ActionFn(9);
+        let __sym0 = __pop_Variant34(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action9::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant34(__nt), __end));
+        (1, 107)
+    }
+    pub(crate) fn __reduce233<
+    >(
+        __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, 108)
+    }
+    pub(crate) fn __reduce234<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ForStmt = ForStmt => ActionFn(14);
+        let __sym0 = __pop_Variant36(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action14::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant36(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce235<
+    >(
+        __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, 110)
+    }
+    pub(crate) fn __reduce236<
+    >(
+        __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, 111)
+    }
+    pub(crate) fn __reduce237<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(3);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action3::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 112)
+    }
+    pub(crate) fn __reduce238<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(15);
+        let __sym0 = __pop_Variant39(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action15::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant39(__nt), __end));
+        (1, 113)
+    }
+    pub(crate) fn __reduce239<
+    >(
+        __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, 114)
+    }
+    pub(crate) fn __reduce240<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __LetStmt = LetStmt => ActionFn(10);
+        let __sym0 = __pop_Variant41(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action10::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant41(__nt), __end));
+        (1, 115)
+    }
+    pub(crate) fn __reduce241<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    pub(crate) fn __reduce242<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
+    }
+    pub(crate) fn __reduce244<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathExpr = PathExpr => 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, 119)
+    }
+    pub(crate) fn __reduce245<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant54(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action12::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 122)
+    }
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
+    >(
+        __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, 125)
+    }
+    pub(crate) fn __reduce251<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __StructInitExpr = StructInitExpr => ActionFn(29);
+        let __sym0 = __pop_Variant58(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action29::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
     pub(crate) fn __reduce252<
     >(
@@ -488955,13 +514046,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __StructInitField = StructInitField => ActionFn(28);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        let __nt = super::__action28::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (1, 127)
     }
     pub(crate) fn __reduce253<
     >(
@@ -488970,13 +514061,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        // __Term = Term => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        let __nt = super::__action17::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 128)
     }
     pub(crate) fn __reduce254<
     >(
@@ -488985,13 +514076,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        // __Term0 = Term0 => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        let __nt = super::__action16::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 129)
     }
     pub(crate) fn __reduce255<
     >(
@@ -489000,16 +514091,76 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(13);
+        // __Type = Type => 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, 130)
+    }
+    pub(crate) fn __reduce256<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __TypeQualifier = TypeQualifier => ActionFn(1);
+        let __sym0 = __pop_Variant60(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action1::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
+    }
+    pub(crate) fn __reduce257<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __UnaryOp = UnaryOp => ActionFn(26);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        (1, 132)
+    }
+    pub(crate) fn __reduce258<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ValueExpr = ValueExpr => ActionFn(27);
+        let __sym0 = __pop_Variant63(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action27::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
+    }
+    pub(crate) fn __reduce259<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __WhileStmt = WhileStmt => ActionFn(13);
+        let __sym0 = __pop_Variant64(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action13::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
-pub(crate) use self::__parse__ModuleStatement::ModuleStatementParser;
+pub use self::__parse__Modules::ModulesParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
@@ -489076,22 +514227,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -489099,7 +514252,7 @@
         // 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,
         // State 2
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 4, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 5, -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 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, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
@@ -489111,7 +514264,7 @@
         // State 7
         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
-        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,
+        0, -169, -169, -169, -169, 17, -169, -169, -169, -169, -169, 0, 4, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 5, -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 9
         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
@@ -489133,7 +514286,7 @@
         // State 18
         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, -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,
+        0, -169, -169, -169, -169, 17, -169, -169, -169, -169, -169, 0, 4, 0, -169, 0, 79, 0, -169, -169, 0, -169, -169, -169, 5, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 20
         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
@@ -489159,7 +514312,7 @@
         // State 31
         0, 0, 0, 91, 0, 0, 0, 92, 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, 0, 0, 53, 0, 0, 0, 0, 54, -188, 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, -188, 0,
+        0, 0, 0, 53, 0, 0, 0, 0, 54, -191, 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, -191, 0,
         // State 33
         0, 0, 0, 91, 0, 0, 0, 92, 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
@@ -489167,37 +514320,37 @@
         // State 35
         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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 37
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 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, -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 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,
         // 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,
         // State 41
-        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, -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 42
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 45
-        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, -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 46
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 47
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 48
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 49
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 50
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 51
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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
@@ -489205,7 +514358,7 @@
         // 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
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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,
         // State 57
@@ -489249,11 +514402,11 @@
         // 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,
         // State 77
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 78
         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, -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, -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 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
@@ -489269,19 +514422,19 @@
         // State 86
         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 87
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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,
         // State 88
         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 89
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 90
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
         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, -99, 0,
         // State 93
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 95
@@ -489291,29 +514444,29 @@
         // State 97
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -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, -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 99
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 104
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 105
         0, 0, 0, -57, 0, 0, 0, -57, 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 106
         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, 0, 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, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 108
         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,
         // State 109
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -489322,9 +514475,9 @@
         // State 0
         0,
         // State 1
-        -166,
+        -169,
         // State 2
-        -165,
+        -168,
         // State 3
         0,
         // State 4
@@ -489388,15 +514541,15 @@
         // State 33
         0,
         // State 34
-        -241,
+        -245,
         // State 35
         -138,
         // State 36
-        -169,
+        -172,
         // State 37
-        -170,
+        -173,
         // State 38
-        -167,
+        -170,
         // State 39
         0,
         // State 40
@@ -489430,7 +514583,7 @@
         // State 54
         0,
         // State 55
-        -168,
+        -171,
         // State 56
         0,
         // State 57
@@ -489590,36 +514743,36 @@
                 _ => 8,
             },
             62 => 71,
-            72 => match state {
+            74 => match state {
                 0 => 34,
                 _ => 42,
             },
-            73 => match state {
+            75 => match state {
                 2 => 37,
                 _ => 36,
             },
-            74 => 2,
-            81 => match state {
+            76 => 2,
+            83 => match state {
                 30 => 104,
                 _ => 72,
             },
-            82 => match state {
+            84 => match state {
                 27 => 92,
                 _ => 84,
             },
-            84 => 43,
-            85 => 44,
-            86 => match state {
+            86 => 43,
+            87 => 44,
+            88 => match state {
                 28 => 95,
                 _ => 88,
             },
-            88 => match state {
+            90 => match state {
                 29 => 99,
                 _ => 89,
             },
-            90 => 29,
-            91 => 9,
-            92 => 45,
+            92 => 29,
+            93 => 9,
+            94 => 45,
             _ => 0,
         }
     }
@@ -490861,25 +516014,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -490891,14 +516044,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -490910,19 +516063,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -490934,109 +516087,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -491048,109 +516201,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -491162,43 +516315,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -491210,220 +516363,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 114,
+                }
+            }
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            240 => __state_machine::SimulatedReduce::Accept,
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
-            244 => {
+            244 => __state_machine::SimulatedReduce::Accept,
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -492220,12 +517397,7 @@
                 __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             240 => {
-                // __PathExpr = PathExpr => ActionFn(4);
-                let __sym0 = __pop_Variant48(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action4::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             241 => {
                 __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -492237,7 +517409,12 @@
                 __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __PathExpr = PathExpr => ActionFn(4);
+                let __sym0 = __pop_Variant50(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action4::<>(__sym0);
+                return Some(Ok(__nt));
             }
             245 => {
                 __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -492272,6 +517449,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -492365,6 +517554,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -492375,13 +517574,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -492465,6 +517664,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -492485,13 +517694,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -492635,66 +517844,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -492705,13 +517914,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -492725,43 +517934,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -492775,13 +517984,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -492815,13 +518024,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -492875,13 +518084,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -492922,10 +518131,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -492936,11 +518145,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -492951,11 +518160,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -492966,13 +518175,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -492983,11 +518192,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -492998,10 +518207,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -493012,11 +518221,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -493027,10 +518236,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -493041,11 +518250,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -493056,10 +518265,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -493070,13 +518279,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -493087,13 +518296,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -493104,10 +518313,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -493118,14 +518327,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -493136,14 +518345,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -493154,10 +518363,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -493168,13 +518377,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -493185,13 +518394,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -493202,10 +518411,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -493216,14 +518425,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -493234,14 +518443,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -493252,10 +518461,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -493266,13 +518475,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -493283,10 +518492,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -493297,11 +518506,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -493312,13 +518521,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -493329,14 +518538,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -493347,13 +518556,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -493364,10 +518573,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -493378,11 +518587,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -493393,13 +518602,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -493410,14 +518619,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -493428,13 +518637,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -493445,10 +518654,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -493459,11 +518668,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -493474,13 +518683,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -493491,14 +518700,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -493509,13 +518718,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -493526,10 +518735,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -493540,11 +518749,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -493555,13 +518764,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -493572,14 +518781,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -493590,13 +518799,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -493607,10 +518816,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -493621,11 +518830,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -493636,13 +518845,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -493653,14 +518862,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -493671,13 +518880,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -493688,10 +518897,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -493702,11 +518911,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -493717,13 +518926,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -493734,14 +518943,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -493752,13 +518961,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -493769,10 +518978,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -493783,11 +518992,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -493798,13 +519007,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -493815,14 +519024,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -493833,10 +519042,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -493847,10 +519056,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -493861,14 +519070,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -493879,15 +519088,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -493898,14 +519107,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -493916,15 +519125,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -493935,11 +519144,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -493950,11 +519159,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -493965,11 +519174,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -493980,11 +519189,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -493995,11 +519204,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494010,11 +519219,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494025,11 +519234,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494040,11 +519249,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494055,11 +519264,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -494070,11 +519279,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -494085,11 +519294,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -494100,11 +519309,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494115,11 +519324,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494130,11 +519339,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494145,11 +519354,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494160,11 +519369,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494175,14 +519384,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -494193,11 +519402,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -494208,10 +519417,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -494222,13 +519431,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -494239,11 +519448,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -494254,11 +519463,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -494269,10 +519478,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -494283,13 +519492,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -494300,11 +519509,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -494315,11 +519524,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -494330,10 +519539,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -494344,13 +519553,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -494361,11 +519570,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -494376,11 +519585,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -494391,10 +519600,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -494405,13 +519614,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -494422,11 +519631,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -494437,11 +519646,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -494452,10 +519661,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -494466,13 +519675,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -494483,11 +519692,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -494498,11 +519707,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -494513,10 +519722,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -494527,13 +519736,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -494544,11 +519753,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -494559,7 +519768,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -494570,7 +519779,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -494581,11 +519790,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -494596,10 +519805,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -494610,13 +519819,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -494627,11 +519836,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -494642,14 +519851,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -494660,11 +519869,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -494675,11 +519884,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -494690,14 +519899,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -494708,13 +519917,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -494725,13 +519934,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -494742,13 +519951,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -494759,11 +519968,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -494774,14 +519983,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -494792,11 +520001,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -494807,14 +520016,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -494825,11 +520034,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -494840,11 +520049,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -494855,10 +520064,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -494869,7 +520078,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -494877,7 +520086,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -494888,14 +520097,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -494906,11 +520115,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -494921,10 +520130,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -494935,7 +520144,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -494944,7 +520153,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -494955,7 +520164,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -494966,7 +520175,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -494977,7 +520186,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -494991,7 +520200,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -495002,7 +520211,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -495014,7 +520223,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -495025,7 +520234,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -495038,7 +520247,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -495049,7 +520258,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -495060,7 +520269,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -495071,7 +520280,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -495084,7 +520293,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -495095,7 +520304,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -495106,7 +520315,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -495117,7 +520326,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -495129,7 +520338,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -495140,7 +520349,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -495150,7 +520359,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -495161,11 +520370,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -495176,11 +520385,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -495191,10 +520400,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -495205,11 +520414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -495220,7 +520429,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -495229,7 +520438,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -495240,7 +520449,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -495249,7 +520458,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -495260,14 +520469,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -495278,7 +520487,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -495288,7 +520497,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -495299,14 +520508,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -495317,7 +520526,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -495328,7 +520537,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -495339,7 +520548,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -495349,7 +520558,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -495360,9 +520569,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -495371,7 +520580,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -495382,9 +520591,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -495392,7 +520601,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -495403,11 +520612,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -495418,13 +520627,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -495435,11 +520644,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -495450,10 +520659,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -495464,11 +520673,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -495479,13 +520688,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -495496,11 +520705,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -495511,13 +520720,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -495528,7 +520737,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -495538,7 +520747,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -495549,7 +520758,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -495558,7 +520767,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -495569,11 +520778,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -495584,13 +520793,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -495599,13 +520810,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -495614,13 +520825,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -495629,15 +520840,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -495646,11 +520855,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -495661,15 +520870,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -495678,16 +520885,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -495696,11 +520902,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -495711,15 +520917,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -495728,13 +520934,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -495743,12 +520952,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -495757,13 +520967,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -495774,13 +520984,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -495789,13 +520999,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -495804,13 +521013,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -495819,13 +521030,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -495834,15 +521045,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -495851,15 +521060,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -495868,15 +521075,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -495885,15 +521090,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -495902,7 +521107,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -495914,62 +521170,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -495978,12 +521181,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -495992,17 +521201,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -496011,16 +521219,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -496029,16 +521234,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -496047,13 +521248,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -496062,12 +521267,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -496076,15 +521285,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -496094,13 +521303,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -496109,13 +521318,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -496124,13 +521332,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -496139,16 +521350,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -496157,13 +521365,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -496172,15 +521380,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -496189,17 +521395,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -496208,18 +521413,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -496228,13 +521428,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -496243,12 +521445,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -496257,13 +521464,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -496272,15 +521484,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -496289,15 +521499,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -496306,15 +521513,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -496323,12 +521528,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -496337,13 +521545,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -496352,13 +521562,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -496367,15 +521579,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -496384,12 +521593,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -496399,13 +521608,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -496414,13 +521623,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -496429,13 +521640,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -496444,13 +521655,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -496459,13 +521670,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -496474,13 +521685,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -496489,18 +521700,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496513,9 +521769,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496528,9 +521784,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496543,9 +521799,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496558,9 +521814,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496573,9 +521829,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496588,9 +521844,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496603,9 +521859,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496618,9 +521874,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496633,9 +521889,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496648,9 +521904,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496663,9 +521919,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496678,9 +521934,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496693,9 +521949,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496708,9 +521964,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496723,9 +521979,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496738,9 +521994,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496753,9 +522009,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496768,9 +522024,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496783,9 +522039,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496798,36 +522054,6 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
     pub(crate) fn __reduce241<
@@ -496837,13 +522063,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -496852,13 +522078,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -496867,28 +522093,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
-    }
-    pub(crate) fn __reduce244<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce245<
     >(
@@ -496897,15 +522108,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496918,9 +522189,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496928,14 +522199,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496948,9 +522219,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496963,9 +522234,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496978,9 +522249,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -496993,9 +522264,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -497003,14 +522274,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -497018,14 +522289,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -497033,14 +522304,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -497048,12 +522319,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__PathExpr::PathExprParser;
@@ -497123,22 +522394,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -497154,7 +522427,7 @@
         // State 5
         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, -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,
+        0, -169, -169, -169, -169, 16, -169, -169, -169, -169, -169, 0, 2, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 3, -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 7
         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
@@ -497170,7 +522443,7 @@
         // State 13
         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
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 2, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 3, -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 15
         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
@@ -497178,7 +522451,7 @@
         // State 17
         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, -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,
+        0, -169, -169, -169, -169, 16, -169, -169, -169, -169, -169, 0, 2, 0, -169, 0, 78, 0, -169, -169, 0, -169, -169, -169, 3, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 19
         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
@@ -497204,13 +522477,13 @@
         // State 30
         0, 0, 0, 90, 0, 0, 0, 91, 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, 50, 0, 0, 0, 0, 51, -188, 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, -188, 0,
+        0, 0, 0, 50, 0, 0, 0, 0, 51, -191, 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, -191, 0,
         // State 32
         0, 0, 0, 90, 0, 0, 0, 91, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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, -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 35
         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
@@ -497218,27 +522491,27 @@
         // State 37
         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, -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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // State 40
         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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 42
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 44
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 45
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 46
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 47
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 48
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 49
         -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
@@ -497246,7 +522519,7 @@
         // 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,
         // State 52
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 0,
         // State 53
         -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
@@ -497274,7 +522547,7 @@
         // State 65
         -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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 67
         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
@@ -497288,17 +522561,17 @@
         // 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,
         // State 73
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 77
         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, -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, -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 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
@@ -497314,19 +522587,19 @@
         // State 85
         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 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 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,
         // State 87
         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 88
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 89
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 100, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         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, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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
@@ -497336,29 +522609,29 @@
         // State 96
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -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, -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 98
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 103
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 104
         0, 0, 0, -57, 0, 0, 0, -57, 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 105
         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, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -497431,9 +522704,9 @@
         // State 32
         0,
         // State 33
-        -242,
+        -246,
         // State 34
-        -167,
+        -170,
         // State 35
         -138,
         // State 36
@@ -497469,7 +522742,7 @@
         // State 51
         0,
         // State 52
-        -168,
+        -171,
         // State 53
         0,
         // State 54
@@ -497632,34 +522905,34 @@
                 _ => 6,
             },
             62 => 69,
-            72 => 39,
-            73 => match state {
+            74 => 39,
+            75 => match state {
                 0 => 33,
                 14 => 73,
                 _ => 66,
             },
-            74 => 14,
-            81 => match state {
+            76 => 14,
+            83 => match state {
                 29 => 103,
                 _ => 70,
             },
-            82 => match state {
+            84 => match state {
                 26 => 91,
                 _ => 83,
             },
-            84 => 40,
-            85 => 41,
-            86 => match state {
+            86 => 40,
+            87 => 41,
+            88 => match state {
                 27 => 94,
                 _ => 87,
             },
-            88 => match state {
+            90 => match state {
                 28 => 98,
                 _ => 88,
             },
-            90 => 28,
-            91 => 7,
-            92 => 42,
+            92 => 28,
+            93 => 7,
+            94 => 42,
             _ => 0,
         }
     }
@@ -498901,25 +524174,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -498931,14 +524204,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -498950,19 +524223,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -498974,109 +524247,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -499088,109 +524361,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -499202,43 +524475,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -499250,220 +524523,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 115,
+                }
+            }
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            241 => __state_machine::SimulatedReduce::Accept,
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
-            245 => {
+            245 => __state_machine::SimulatedReduce::Accept,
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -500263,12 +525560,7 @@
                 __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             241 => {
-                // __PathSegment = PathSegment => ActionFn(6);
-                let __sym0 = __pop_Variant49(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action6::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             242 => {
                 __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -500280,7 +525572,12 @@
                 __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __PathSegment = PathSegment => ActionFn(6);
+                let __sym0 = __pop_Variant51(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action6::<>(__sym0);
+                return Some(Ok(__nt));
             }
             246 => {
                 __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -500312,6 +525609,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -500405,6 +525714,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -500415,13 +525734,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -500505,6 +525824,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -500525,13 +525854,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -500675,66 +526004,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -500745,13 +526074,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -500765,43 +526094,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -500815,13 +526144,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -500855,13 +526184,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -500915,13 +526244,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -500962,10 +526291,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -500976,11 +526305,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -500991,11 +526320,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -501006,13 +526335,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -501023,11 +526352,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -501038,10 +526367,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -501052,11 +526381,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -501067,10 +526396,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -501081,11 +526410,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -501096,10 +526425,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -501110,13 +526439,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -501127,13 +526456,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -501144,10 +526473,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -501158,14 +526487,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -501176,14 +526505,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -501194,10 +526523,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -501208,13 +526537,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -501225,13 +526554,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -501242,10 +526571,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -501256,14 +526585,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -501274,14 +526603,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -501292,10 +526621,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -501306,13 +526635,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -501323,10 +526652,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -501337,11 +526666,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -501352,13 +526681,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -501369,14 +526698,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -501387,13 +526716,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -501404,10 +526733,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -501418,11 +526747,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -501433,13 +526762,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -501450,14 +526779,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -501468,13 +526797,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -501485,10 +526814,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -501499,11 +526828,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -501514,13 +526843,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -501531,14 +526860,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -501549,13 +526878,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -501566,10 +526895,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -501580,11 +526909,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -501595,13 +526924,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -501612,14 +526941,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -501630,13 +526959,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -501647,10 +526976,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -501661,11 +526990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -501676,13 +527005,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -501693,14 +527022,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -501711,13 +527040,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -501728,10 +527057,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -501742,11 +527071,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -501757,13 +527086,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -501774,14 +527103,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -501792,13 +527121,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -501809,10 +527138,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -501823,11 +527152,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -501838,13 +527167,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -501855,14 +527184,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -501873,10 +527202,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -501887,10 +527216,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -501901,14 +527230,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -501919,15 +527248,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -501938,14 +527267,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -501956,15 +527285,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -501975,11 +527304,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -501990,11 +527319,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502005,11 +527334,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502020,11 +527349,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502035,11 +527364,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502050,11 +527379,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502065,11 +527394,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502080,11 +527409,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502095,11 +527424,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -502110,11 +527439,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -502125,11 +527454,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -502140,11 +527469,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502155,11 +527484,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502170,11 +527499,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502185,11 +527514,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502200,11 +527529,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502215,14 +527544,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -502233,11 +527562,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -502248,10 +527577,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -502262,13 +527591,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -502279,11 +527608,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -502294,11 +527623,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -502309,10 +527638,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -502323,13 +527652,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -502340,11 +527669,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -502355,11 +527684,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -502370,10 +527699,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -502384,13 +527713,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -502401,11 +527730,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -502416,11 +527745,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -502431,10 +527760,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -502445,13 +527774,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -502462,11 +527791,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -502477,11 +527806,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -502492,10 +527821,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -502506,13 +527835,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -502523,11 +527852,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -502538,11 +527867,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -502553,10 +527882,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -502567,13 +527896,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -502584,11 +527913,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -502599,7 +527928,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -502610,7 +527939,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -502621,11 +527950,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -502636,10 +527965,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -502650,13 +527979,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -502667,11 +527996,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -502682,14 +528011,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -502700,11 +528029,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -502715,11 +528044,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -502730,14 +528059,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -502748,13 +528077,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -502765,13 +528094,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -502782,13 +528111,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -502799,11 +528128,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -502814,14 +528143,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -502832,11 +528161,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -502847,14 +528176,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -502865,11 +528194,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -502880,11 +528209,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -502895,10 +528224,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -502909,7 +528238,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -502917,7 +528246,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -502928,14 +528257,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -502946,11 +528275,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -502961,10 +528290,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -502975,7 +528304,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -502984,7 +528313,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -502995,7 +528324,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -503006,7 +528335,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -503017,7 +528346,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -503031,7 +528360,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -503042,7 +528371,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -503054,7 +528383,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -503065,7 +528394,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -503078,7 +528407,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -503089,7 +528418,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -503100,7 +528429,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -503111,7 +528440,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -503124,7 +528453,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -503135,7 +528464,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -503146,7 +528475,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -503157,7 +528486,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -503169,7 +528498,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -503180,7 +528509,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -503190,7 +528519,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -503201,11 +528530,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -503216,11 +528545,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -503231,10 +528560,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -503245,11 +528574,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -503260,7 +528589,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -503269,7 +528598,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -503280,7 +528609,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -503289,7 +528618,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -503300,14 +528629,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -503318,7 +528647,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -503328,7 +528657,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -503339,14 +528668,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -503357,7 +528686,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -503368,7 +528697,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -503379,7 +528708,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -503389,7 +528718,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -503400,9 +528729,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -503411,7 +528740,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -503422,9 +528751,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -503432,7 +528761,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -503443,11 +528772,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -503458,13 +528787,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -503475,11 +528804,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -503490,10 +528819,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -503504,11 +528833,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -503519,13 +528848,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -503536,11 +528865,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -503551,13 +528880,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -503568,7 +528897,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -503578,7 +528907,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -503589,7 +528918,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -503598,7 +528927,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -503609,11 +528938,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -503624,13 +528953,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -503639,13 +528970,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -503654,13 +528985,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -503669,15 +529000,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -503686,11 +529015,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -503701,15 +529030,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -503718,16 +529045,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -503736,11 +529062,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -503751,15 +529077,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -503768,13 +529094,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -503783,12 +529112,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -503797,13 +529127,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -503814,13 +529144,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -503829,13 +529159,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -503844,13 +529173,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -503859,13 +529190,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -503874,15 +529205,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -503891,15 +529220,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -503908,15 +529235,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -503925,15 +529250,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -503942,7 +529267,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -503954,62 +529330,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -504018,12 +529341,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -504032,17 +529361,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -504051,16 +529379,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -504069,16 +529394,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -504087,13 +529408,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -504102,12 +529427,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -504116,15 +529445,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -504134,13 +529463,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -504149,13 +529478,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -504164,13 +529492,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -504179,16 +529510,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -504197,13 +529525,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -504212,15 +529540,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -504229,17 +529555,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -504248,18 +529573,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -504268,13 +529588,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -504283,12 +529605,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -504297,13 +529624,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -504312,15 +529644,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -504329,15 +529659,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -504346,15 +529673,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -504363,12 +529688,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -504377,13 +529705,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -504392,13 +529722,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -504407,15 +529739,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -504424,12 +529753,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -504439,13 +529768,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -504454,13 +529783,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -504469,13 +529800,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -504484,13 +529815,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -504499,13 +529830,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -504514,13 +529845,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -504529,18 +529860,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504553,9 +529929,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504568,9 +529944,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504583,9 +529959,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504598,9 +529974,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504613,9 +529989,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504628,9 +530004,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504643,9 +530019,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504658,9 +530034,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504673,9 +530049,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504688,9 +530064,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504703,9 +530079,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504718,9 +530094,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504733,9 +530109,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504748,9 +530124,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504763,9 +530139,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504778,9 +530154,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504793,9 +530169,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504808,9 +530184,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504823,9 +530199,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504838,51 +530214,21 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    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)
     {
-        // __Module = Module => ActionFn(36);
+        // __Module = Module => ActionFn(37);
         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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
-    }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (1, 116)
     }
     pub(crate) fn __reduce242<
@@ -504892,13 +530238,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -504907,13 +530253,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -504921,16 +530267,61 @@
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
+    {
+        // __PathExpr = PathExpr => 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, 119)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant54(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action12::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 122)
+    }
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
     {
         // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504938,14 +530329,14 @@
     ) -> (usize, usize)
     {
         // __Struct = Struct => ActionFn(34);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (1, 124)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504958,9 +530349,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504968,14 +530359,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -504988,9 +530379,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -505003,9 +530394,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -505018,9 +530409,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -505033,9 +530424,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -505043,14 +530434,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -505058,14 +530449,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -505073,14 +530464,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -505088,12 +530479,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__PathSegment::PathSegmentParser;
@@ -505163,22 +530554,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -505196,7 +530589,7 @@
         // 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,
+        0, -169, -169, -169, -169, 17, -169, -169, -169, -169, -169, 0, 3, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 4, -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 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
@@ -505212,7 +530605,7 @@
         // 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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 3, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 4, -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 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
@@ -505220,7 +530613,7 @@
         // 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,
+        0, -169, -169, -169, -169, 17, -169, -169, -169, -169, -169, 0, 3, 0, -169, 0, 78, 0, -169, -169, 0, -169, -169, -169, 4, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 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
@@ -505246,15 +530639,15 @@
         // State 31
         0, 0, 0, 90, 0, 0, 0, 91, 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, -188, 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, -188, 0,
+        0, 0, 0, 52, 0, 0, 0, 0, 53, -191, 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, -191, 0,
         // State 33
         0, 0, 0, 90, 0, 0, 0, 91, 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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 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,
+        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 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
@@ -505262,27 +530655,27 @@
         // 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, -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, -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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 44
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 46
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 47
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 48
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 49
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 50
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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
@@ -505290,7 +530683,7 @@
         // 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,
+        0, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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
@@ -505334,11 +530727,11 @@
         // 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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 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, -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, -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 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
@@ -505354,19 +530747,19 @@
         // State 85
         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 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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,
         // State 87
         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 88
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 89
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 100, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         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, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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
@@ -505376,29 +530769,29 @@
         // State 96
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -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, -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 98
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 103
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 104
         0, 0, 0, -57, 0, 0, 0, -57, 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 105
         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, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -505407,7 +530800,7 @@
         // State 0
         0,
         // State 1
-        -243,
+        -247,
         // State 2
         0,
         // State 3
@@ -505473,11 +530866,11 @@
         // State 33
         0,
         // State 34
-        -169,
+        -172,
         // State 35
-        -170,
+        -173,
         // State 36
-        -167,
+        -170,
         // State 37
         -138,
         // State 38
@@ -505513,7 +530906,7 @@
         // State 53
         0,
         // State 54
-        -168,
+        -171,
         // State 55
         0,
         // State 56
@@ -505672,36 +531065,36 @@
                 _ => 7,
             },
             62 => 70,
-            72 => 41,
-            73 => match state {
+            74 => 41,
+            75 => match state {
                 1 | 15 => 35,
                 _ => 34,
             },
-            74 => match state {
+            76 => match state {
                 0 => 1,
                 _ => 15,
             },
-            81 => match state {
+            83 => match state {
                 30 => 103,
                 _ => 71,
             },
-            82 => match state {
+            84 => match state {
                 27 => 91,
                 _ => 83,
             },
-            84 => 42,
-            85 => 43,
-            86 => match state {
+            86 => 42,
+            87 => 43,
+            88 => match state {
                 28 => 94,
                 _ => 87,
             },
-            88 => match state {
+            90 => match state {
                 29 => 98,
                 _ => 88,
             },
-            90 => 29,
-            91 => 8,
-            92 => 44,
+            92 => 29,
+            93 => 8,
+            94 => 44,
             _ => 0,
         }
     }
@@ -506943,25 +532336,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -506973,14 +532366,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -506992,19 +532385,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -507016,109 +532409,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -507130,109 +532523,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -507244,43 +532637,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -507292,220 +532685,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 116,
+                }
+            }
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            242 => __state_machine::SimulatedReduce::Accept,
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
-            246 => {
+            246 => __state_machine::SimulatedReduce::Accept,
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -508308,12 +533725,7 @@
                 __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             242 => {
-                // __PathSegments = PathSegments => ActionFn(5);
-                let __sym0 = __pop_Variant50(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action5::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             243 => {
                 __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -508325,7 +533737,12 @@
                 __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __PathSegments = PathSegments => ActionFn(5);
+                let __sym0 = __pop_Variant52(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action5::<>(__sym0);
+                return Some(Ok(__nt));
             }
             247 => {
                 __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -508354,6 +533771,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -508447,6 +533876,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -508457,13 +533896,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -508547,6 +533986,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -508567,13 +534016,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -508717,66 +534166,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -508787,13 +534236,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -508807,43 +534256,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -508857,13 +534306,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -508897,13 +534346,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -508957,13 +534406,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -509004,10 +534453,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -509018,11 +534467,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -509033,11 +534482,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -509048,13 +534497,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -509065,11 +534514,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -509080,10 +534529,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -509094,11 +534543,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -509109,10 +534558,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -509123,11 +534572,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -509138,10 +534587,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -509152,13 +534601,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -509169,13 +534618,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -509186,10 +534635,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -509200,14 +534649,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -509218,14 +534667,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -509236,10 +534685,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -509250,13 +534699,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -509267,13 +534716,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -509284,10 +534733,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -509298,14 +534747,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -509316,14 +534765,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -509334,10 +534783,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -509348,13 +534797,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -509365,10 +534814,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -509379,11 +534828,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -509394,13 +534843,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -509411,14 +534860,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -509429,13 +534878,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -509446,10 +534895,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -509460,11 +534909,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -509475,13 +534924,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -509492,14 +534941,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -509510,13 +534959,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -509527,10 +534976,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -509541,11 +534990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -509556,13 +535005,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -509573,14 +535022,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -509591,13 +535040,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -509608,10 +535057,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -509622,11 +535071,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -509637,13 +535086,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -509654,14 +535103,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -509672,13 +535121,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -509689,10 +535138,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -509703,11 +535152,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -509718,13 +535167,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -509735,14 +535184,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -509753,13 +535202,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -509770,10 +535219,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -509784,11 +535233,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -509799,13 +535248,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -509816,14 +535265,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -509834,13 +535283,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -509851,10 +535300,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -509865,11 +535314,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -509880,13 +535329,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -509897,14 +535346,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -509915,10 +535364,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -509929,10 +535378,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -509943,14 +535392,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -509961,15 +535410,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -509980,14 +535429,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -509998,15 +535447,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -510017,11 +535466,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510032,11 +535481,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510047,11 +535496,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510062,11 +535511,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510077,11 +535526,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510092,11 +535541,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510107,11 +535556,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510122,11 +535571,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510137,11 +535586,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -510152,11 +535601,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -510167,11 +535616,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -510182,11 +535631,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510197,11 +535646,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510212,11 +535661,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510227,11 +535676,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510242,11 +535691,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510257,14 +535706,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -510275,11 +535724,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -510290,10 +535739,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -510304,13 +535753,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -510321,11 +535770,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -510336,11 +535785,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -510351,10 +535800,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -510365,13 +535814,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -510382,11 +535831,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -510397,11 +535846,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -510412,10 +535861,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -510426,13 +535875,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -510443,11 +535892,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -510458,11 +535907,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -510473,10 +535922,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -510487,13 +535936,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -510504,11 +535953,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -510519,11 +535968,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -510534,10 +535983,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -510548,13 +535997,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -510565,11 +536014,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -510580,11 +536029,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -510595,10 +536044,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -510609,13 +536058,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -510626,11 +536075,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -510641,7 +536090,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -510652,7 +536101,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -510663,11 +536112,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -510678,10 +536127,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -510692,13 +536141,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -510709,11 +536158,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -510724,14 +536173,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -510742,11 +536191,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -510757,11 +536206,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -510772,14 +536221,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -510790,13 +536239,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -510807,13 +536256,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -510824,13 +536273,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -510841,11 +536290,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -510856,14 +536305,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -510874,11 +536323,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -510889,14 +536338,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -510907,11 +536356,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -510922,11 +536371,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -510937,10 +536386,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -510951,7 +536400,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -510959,7 +536408,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -510970,14 +536419,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -510988,11 +536437,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -511003,10 +536452,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -511017,7 +536466,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -511026,7 +536475,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -511037,7 +536486,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -511048,7 +536497,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -511059,7 +536508,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -511073,7 +536522,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -511084,7 +536533,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -511096,7 +536545,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -511107,7 +536556,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -511120,7 +536569,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -511131,7 +536580,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -511142,7 +536591,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -511153,7 +536602,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -511166,7 +536615,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -511177,7 +536626,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -511188,7 +536637,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -511199,7 +536648,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -511211,7 +536660,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -511222,7 +536671,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -511232,7 +536681,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -511243,11 +536692,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -511258,11 +536707,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -511273,10 +536722,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -511287,11 +536736,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -511302,7 +536751,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -511311,7 +536760,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -511322,7 +536771,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -511331,7 +536780,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -511342,14 +536791,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -511360,7 +536809,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -511370,7 +536819,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -511381,14 +536830,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -511399,7 +536848,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -511410,7 +536859,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -511421,7 +536870,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -511431,7 +536880,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -511442,9 +536891,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -511453,7 +536902,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -511464,9 +536913,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -511474,7 +536923,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -511485,11 +536934,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -511500,13 +536949,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -511517,11 +536966,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -511532,10 +536981,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -511546,11 +536995,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -511561,13 +537010,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -511578,11 +537027,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -511593,13 +537042,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -511610,7 +537059,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -511620,7 +537069,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -511631,7 +537080,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -511640,7 +537089,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -511651,11 +537100,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -511666,13 +537115,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -511681,13 +537132,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -511696,13 +537147,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -511711,15 +537162,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -511728,11 +537177,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -511743,15 +537192,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -511760,16 +537207,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -511778,11 +537224,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -511793,15 +537239,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -511810,13 +537256,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -511825,12 +537274,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -511839,13 +537289,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -511856,13 +537306,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -511871,13 +537321,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -511886,13 +537335,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -511901,13 +537352,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -511916,15 +537367,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -511933,15 +537382,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -511950,15 +537397,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -511967,15 +537412,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -511984,7 +537429,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -511996,62 +537492,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -512060,12 +537503,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -512074,17 +537523,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -512093,16 +537541,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -512111,16 +537556,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -512129,13 +537570,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -512144,12 +537589,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -512158,15 +537607,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -512176,13 +537625,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -512191,13 +537640,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -512206,13 +537654,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -512221,16 +537672,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -512239,13 +537687,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -512254,15 +537702,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -512271,17 +537717,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -512290,18 +537735,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -512310,13 +537750,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -512325,12 +537767,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -512339,13 +537786,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -512354,15 +537806,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -512371,15 +537821,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -512388,15 +537835,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -512405,12 +537850,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -512419,13 +537867,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -512434,13 +537884,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -512449,15 +537901,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -512466,12 +537915,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -512481,13 +537930,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -512496,13 +537945,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -512511,13 +537962,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -512526,13 +537977,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -512541,13 +537992,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -512556,13 +538007,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -512571,18 +538022,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512595,9 +538091,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512610,9 +538106,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512625,9 +538121,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512640,9 +538136,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512655,9 +538151,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512670,9 +538166,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512685,9 +538181,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512700,9 +538196,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512715,9 +538211,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512730,9 +538226,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512745,9 +538241,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512760,9 +538256,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512775,9 +538271,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512790,9 +538286,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512805,9 +538301,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512820,9 +538316,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512835,9 +538331,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512850,9 +538346,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512865,9 +538361,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512880,53 +538376,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -512934,12 +538385,27 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
+    }
+    pub(crate) fn __reduce242<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 117)
     }
     pub(crate) fn __reduce243<
@@ -512949,13 +538415,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -512964,13 +538430,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -512979,15 +538445,60 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513000,9 +538511,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513010,14 +538521,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513030,9 +538541,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513045,9 +538556,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513060,9 +538571,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513075,9 +538586,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513085,14 +538596,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513100,14 +538611,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513115,14 +538626,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513130,12 +538641,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub use self::__parse__PathSegments::PathSegmentsParser;
@@ -513205,22 +538716,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -513234,7 +538747,7 @@
         // State 4
         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, -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,
+        0, -169, -169, -169, -169, 15, -169, -169, -169, -169, -169, 0, 16, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 17, -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 6
         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
@@ -513250,7 +538763,7 @@
         // State 12
         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
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 16, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 17, -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 14
         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
@@ -513262,7 +538775,7 @@
         // State 18
         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
-        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,
+        0, -169, -169, -169, -169, 15, -169, -169, -169, -169, -169, 0, 16, 0, -169, 0, 79, 0, -169, -169, 0, -169, -169, -169, 17, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 20
         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
@@ -513290,7 +538803,7 @@
         // State 32
         0, 0, 0, 92, 0, 0, 0, 93, 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
-        0, 0, 0, 51, 0, 0, 0, 0, 52, -188, 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, -188, 0,
+        0, 0, 0, 51, 0, 0, 0, 0, 52, -191, 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, -191, 0,
         // State 34
         0, 0, 0, 92, 0, 0, 0, 93, 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
@@ -513300,29 +538813,29 @@
         // State 37
         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, -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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // State 40
         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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 42
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 44
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 45
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 46
         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, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 48
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 49
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 50
         -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
@@ -513356,7 +538869,7 @@
         // State 65
         -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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 67
         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
@@ -513370,25 +538883,25 @@
         // 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,
         // State 73
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 74
         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, 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, -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 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,
         // State 77
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 78
         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, -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, -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 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, -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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0,
         // State 84
@@ -513400,19 +538913,19 @@
         // State 87
         0, 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,
         // State 88
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 33, 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,
         // State 89
         0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 91
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 102, 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, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
         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,
         // State 94
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 96
@@ -513422,29 +538935,29 @@
         // State 98
         0, 0, 0, -56, 0, 0, 0, -56, 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 99
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, -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, -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 100
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 103
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 105
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 106
         0, 0, 0, -57, 0, 0, 0, -57, 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 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 109
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -513453,15 +538966,15 @@
         // State 0
         0,
         // State 1
-        -174,
+        -177,
         // State 2
-        -173,
+        -176,
         // State 3
         -121,
         // State 4
         -111,
         // State 5
-        -166,
+        -169,
         // State 6
         0,
         // State 7
@@ -513477,7 +538990,7 @@
         // State 12
         0,
         // State 13
-        -165,
+        -168,
         // State 14
         0,
         // State 15
@@ -513521,33 +539034,33 @@
         // State 34
         0,
         // State 35
-        -244,
+        -248,
         // State 36
         -117,
         // State 37
         -119,
         // State 38
-        -195,
+        -198,
         // State 39
-        -217,
+        -220,
         // State 40
         -112,
         // State 41
-        -193,
+        -196,
         // State 42
-        -194,
+        -197,
         // State 43
         0,
         // State 44
         0,
         // State 45
-        -215,
+        -218,
         // State 46
         -138,
         // State 47
-        -214,
+        -217,
         // State 48
-        -216,
+        -219,
         // State 49
         0,
         // State 50
@@ -513583,7 +539096,7 @@
         // State 65
         0,
         // State 66
-        -169,
+        -172,
         // State 67
         -116,
         // State 68
@@ -513597,25 +539110,25 @@
         // State 72
         -118,
         // State 73
-        -170,
+        -173,
         // State 74
         0,
         // State 75
-        -167,
+        -170,
         // State 76
         -113,
         // State 77
-        -192,
+        -195,
         // State 78
         0,
         // State 79
-        -196,
+        -199,
         // State 80
         -124,
         // State 81
         0,
         // State 82
-        -168,
+        -171,
         // State 83
         0,
         // State 84
@@ -513723,34 +539236,34 @@
                 _ => 5,
             },
             62 => 69,
-            72 => 39,
-            73 => match state {
+            74 => 39,
+            75 => match state {
                 13 => 73,
                 _ => 66,
             },
-            74 => 13,
-            76 => 35,
-            81 => match state {
+            76 => 13,
+            78 => 35,
+            83 => match state {
                 31 => 105,
                 _ => 70,
             },
-            82 => match state {
+            84 => match state {
                 28 => 93,
                 _ => 85,
             },
-            84 => 40,
-            85 => 41,
-            86 => match state {
+            86 => 40,
+            87 => 41,
+            88 => match state {
                 29 => 96,
                 _ => 89,
             },
-            88 => match state {
+            90 => match state {
                 30 => 100,
                 _ => 90,
             },
-            90 => 30,
-            91 => 6,
-            92 => 42,
+            92 => 30,
+            93 => 6,
+            94 => 42,
             _ => 0,
         }
     }
@@ -514992,25 +540505,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -515022,14 +540535,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -515041,19 +540554,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -515065,109 +540578,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -515179,109 +540692,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -515293,43 +540806,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -515341,220 +540854,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 117,
+                }
+            }
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            243 => __state_machine::SimulatedReduce::Accept,
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
-            247 => {
+            247 => __state_machine::SimulatedReduce::Accept,
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -516360,12 +541897,7 @@
                 __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             243 => {
-                // __ReturnStmt = ReturnStmt => ActionFn(12);
-                let __sym0 = __pop_Variant52(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action12::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             244 => {
                 __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -516377,7 +541909,12 @@
                 __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __ReturnStmt = ReturnStmt => ActionFn(12);
+                let __sym0 = __pop_Variant54(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action12::<>(__sym0);
+                return Some(Ok(__nt));
             }
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -516403,6 +541940,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -516496,6 +542045,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -516506,13 +542065,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -516596,6 +542155,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -516616,13 +542185,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -516766,66 +542335,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -516836,13 +542405,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -516856,43 +542425,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -516906,13 +542475,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -516946,13 +542515,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -517006,13 +542575,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -517053,10 +542622,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -517067,11 +542636,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -517082,11 +542651,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -517097,13 +542666,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -517114,11 +542683,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -517129,10 +542698,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -517143,11 +542712,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -517158,10 +542727,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -517172,11 +542741,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -517187,10 +542756,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -517201,13 +542770,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -517218,13 +542787,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -517235,10 +542804,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -517249,14 +542818,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -517267,14 +542836,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -517285,10 +542854,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -517299,13 +542868,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -517316,13 +542885,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -517333,10 +542902,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -517347,14 +542916,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -517365,14 +542934,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -517383,10 +542952,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -517397,13 +542966,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -517414,10 +542983,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -517428,11 +542997,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -517443,13 +543012,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -517460,14 +543029,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -517478,13 +543047,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -517495,10 +543064,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -517509,11 +543078,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -517524,13 +543093,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -517541,14 +543110,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -517559,13 +543128,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -517576,10 +543145,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -517590,11 +543159,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -517605,13 +543174,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -517622,14 +543191,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -517640,13 +543209,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -517657,10 +543226,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -517671,11 +543240,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -517686,13 +543255,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -517703,14 +543272,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -517721,13 +543290,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -517738,10 +543307,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -517752,11 +543321,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -517767,13 +543336,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -517784,14 +543353,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -517802,13 +543371,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -517819,10 +543388,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -517833,11 +543402,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -517848,13 +543417,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -517865,14 +543434,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -517883,13 +543452,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -517900,10 +543469,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -517914,11 +543483,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -517929,13 +543498,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -517946,14 +543515,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -517964,10 +543533,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -517978,10 +543547,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -517992,14 +543561,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -518010,15 +543579,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -518029,14 +543598,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -518047,15 +543616,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -518066,11 +543635,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -518081,11 +543650,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -518096,11 +543665,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -518111,11 +543680,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -518126,11 +543695,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -518141,11 +543710,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -518156,11 +543725,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -518171,11 +543740,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -518186,11 +543755,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -518201,11 +543770,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -518216,11 +543785,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -518231,11 +543800,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -518246,11 +543815,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -518261,11 +543830,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -518276,11 +543845,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -518291,11 +543860,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -518306,14 +543875,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -518324,11 +543893,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -518339,10 +543908,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -518353,13 +543922,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -518370,11 +543939,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -518385,11 +543954,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -518400,10 +543969,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -518414,13 +543983,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -518431,11 +544000,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -518446,11 +544015,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -518461,10 +544030,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -518475,13 +544044,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -518492,11 +544061,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -518507,11 +544076,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -518522,10 +544091,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -518536,13 +544105,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -518553,11 +544122,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -518568,11 +544137,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -518583,10 +544152,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -518597,13 +544166,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -518614,11 +544183,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -518629,11 +544198,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -518644,10 +544213,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -518658,13 +544227,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -518675,11 +544244,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -518690,7 +544259,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -518701,7 +544270,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -518712,11 +544281,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -518727,10 +544296,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -518741,13 +544310,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -518758,11 +544327,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -518773,14 +544342,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -518791,11 +544360,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -518806,11 +544375,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -518821,14 +544390,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -518839,13 +544408,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -518856,13 +544425,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -518873,13 +544442,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -518890,11 +544459,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -518905,14 +544474,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -518923,11 +544492,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -518938,14 +544507,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -518956,11 +544525,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -518971,11 +544540,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -518986,10 +544555,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -519000,7 +544569,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -519008,7 +544577,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -519019,14 +544588,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -519037,11 +544606,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -519052,10 +544621,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -519066,7 +544635,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -519075,7 +544644,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -519086,7 +544655,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -519097,7 +544666,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -519108,7 +544677,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -519122,7 +544691,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -519133,7 +544702,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -519145,7 +544714,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -519156,7 +544725,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -519169,7 +544738,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -519180,7 +544749,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -519191,7 +544760,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -519202,7 +544771,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -519215,7 +544784,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -519226,7 +544795,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -519237,7 +544806,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -519248,7 +544817,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -519260,7 +544829,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -519271,7 +544840,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -519281,7 +544850,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -519292,11 +544861,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -519307,11 +544876,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -519322,10 +544891,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -519336,11 +544905,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -519351,7 +544920,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -519360,7 +544929,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -519371,7 +544940,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -519380,7 +544949,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -519391,14 +544960,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -519409,7 +544978,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -519419,7 +544988,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -519430,14 +544999,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -519448,7 +545017,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -519459,7 +545028,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -519470,7 +545039,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -519480,7 +545049,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -519491,9 +545060,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -519502,7 +545071,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -519513,9 +545082,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -519523,7 +545092,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -519534,11 +545103,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -519549,13 +545118,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -519566,11 +545135,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -519581,10 +545150,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -519595,11 +545164,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -519610,13 +545179,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -519627,11 +545196,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -519642,13 +545211,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -519659,7 +545228,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -519669,7 +545238,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -519680,7 +545249,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -519689,7 +545258,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -519700,11 +545269,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -519715,13 +545284,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -519730,13 +545301,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -519745,13 +545316,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -519760,15 +545331,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -519777,11 +545346,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -519792,15 +545361,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -519809,16 +545376,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -519827,11 +545393,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -519842,15 +545408,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -519859,13 +545425,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -519874,12 +545443,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -519888,13 +545458,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -519905,13 +545475,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -519920,13 +545490,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -519935,13 +545504,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -519950,13 +545521,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -519965,15 +545536,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -519982,15 +545551,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -519999,15 +545566,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -520016,15 +545581,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -520033,7 +545598,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -520045,62 +545661,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -520109,12 +545672,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -520123,17 +545692,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -520142,16 +545710,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -520160,16 +545725,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -520178,13 +545739,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -520193,12 +545758,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -520207,15 +545776,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -520225,13 +545794,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -520240,13 +545809,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -520255,13 +545823,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -520270,16 +545841,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -520288,13 +545856,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -520303,15 +545871,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -520320,17 +545886,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -520339,18 +545904,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -520359,13 +545919,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -520374,12 +545936,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -520388,13 +545955,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -520403,15 +545975,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -520420,15 +545990,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -520437,15 +546004,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -520454,12 +546019,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -520468,13 +546036,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -520483,13 +546053,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -520498,15 +546070,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -520515,12 +546084,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -520530,13 +546099,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -520545,13 +546114,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -520560,13 +546131,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -520575,13 +546146,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -520590,13 +546161,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -520605,13 +546176,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -520620,18 +546191,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520644,9 +546260,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520659,9 +546275,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520674,9 +546290,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520689,9 +546305,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520704,9 +546320,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520719,9 +546335,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520734,9 +546350,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520749,9 +546365,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520764,9 +546380,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520779,9 +546395,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520794,9 +546410,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520809,9 +546425,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520824,9 +546440,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520839,9 +546455,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520854,9 +546470,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520869,9 +546485,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520884,9 +546500,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520899,9 +546515,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520914,9 +546530,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520929,53 +546545,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -520983,13 +546554,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -520998,12 +546569,27 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
+    }
+    pub(crate) fn __reduce243<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
         (1, 118)
     }
     pub(crate) fn __reduce244<
@@ -521013,13 +546599,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -521027,16 +546613,61 @@
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
+    {
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
     {
         // __Struct = Struct => ActionFn(34);
-        let __sym0 = __pop_Variant54(__symbols);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (1, 124)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521049,9 +546680,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521059,14 +546690,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521079,9 +546710,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521094,9 +546725,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521109,9 +546740,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521124,9 +546755,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521134,14 +546765,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521149,14 +546780,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521164,14 +546795,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -521179,12 +546810,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__ReturnStmt::ReturnStmtParser;
@@ -521254,22 +546885,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -521277,7 +546910,7 @@
         // State 1
         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, -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,
+        0, -169, -169, -169, -169, 11, -169, -169, -169, -169, -169, 0, 12, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 13, -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 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, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
@@ -521285,13 +546918,13 @@
         // 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, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, -174, 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,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, -177, 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
         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, 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, -169, 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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 12, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, 13, -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 10
         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
@@ -521317,7 +546950,7 @@
         // 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, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, -173, 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,
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, -176, 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, 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
@@ -521331,7 +546964,7 @@
         // State 28
         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, -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,
+        0, -169, -169, -169, -169, 11, -169, -169, -169, -169, -169, 0, 12, 0, -169, 0, 127, -169, -169, -169, 0, -169, -169, -169, 13, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 30
         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
@@ -521391,7 +547024,7 @@
         // 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, -188, 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, -188, 0,
+        0, 0, 0, 101, 0, 0, 0, 0, 102, -191, 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, -191, 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
@@ -521399,9 +547032,9 @@
         // 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, -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, -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 64
-        0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -175, -175, 0, 0, -175, 0, 0, 0, 0, -175, 0, 0, 0, -175, 0, 0, 0, -175, 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, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 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
@@ -521411,7 +547044,7 @@
         // 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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 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 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
@@ -521421,15 +547054,15 @@
         // 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, -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, -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 75
-        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, -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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, -172, -172, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, -172, 0,
         // State 77
-        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 78
         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 78
+        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 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
@@ -521437,35 +547070,35 @@
         // 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, -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, -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 83
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, -220, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, -220, 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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, -193, -193, 0, 0, -193, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, -193, 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 86
-        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, -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 87
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 88
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 89
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, -215, -215, 0, 0, -215, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, -218, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, -218, 0,
         // State 90
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, -214, -214, 0, 0, -214, -214, -214, 0, -214, -214, -214, 0, -214, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, -214, 0,
+        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
         // State 91
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, -216, -216, 0, 0, -216, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, -219, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, -219, 0,
         // State 92
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, -173, -173, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, -173, 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,
+        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 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
@@ -521515,7 +547148,7 @@
         // 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, -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, -218, -218, -218, 0, 0, -218, 0, 0, 0, 0, -218, 0, 0, 0, -218, 0, 0, 0, -218, 0,
+        0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 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
@@ -521523,7 +547156,7 @@
         // 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,
+        0, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, -171, -171, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, -171, 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
@@ -521533,17 +547166,17 @@
         // 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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, -192, -192, 0, 0, -192, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, -192, 0,
+        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 131
-        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, -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 132
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, -197, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 52, 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 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 135
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 148, 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, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 137
@@ -521563,15 +547196,15 @@
         // State 144
         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 145
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, -198, 0, -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, -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 146
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 147
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 148
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 149
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 151
@@ -521581,7 +547214,7 @@
         // State 153
         0, 0, 0, 0, 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, -99, 0,
         // State 154
-        0, 0, 0, 0, 0, 0, -187, 0, 0, -187, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 0, 0, -190, 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, -190, 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, 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 156
@@ -521597,11 +547230,11 @@
         // State 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, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
         // State 162
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 163
         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 164
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 165
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 166
@@ -521609,7 +547242,7 @@
         // State 167
         0, 0, 0, -57, 0, 0, 0, -57, 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 168
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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]
@@ -521742,9 +547375,9 @@
         // State 62
         0,
         // State 63
-        -177,
+        -180,
         // State 64
-        -175,
+        -178,
         // State 65
         0,
         // State 66
@@ -521752,9 +547385,9 @@
         // State 67
         0,
         // State 68
-        -245,
+        -249,
         // State 69
-        -176,
+        -179,
         // State 70
         0,
         // State 71
@@ -521764,15 +547397,15 @@
         // State 73
         0,
         // State 74
-        -179,
+        -182,
         // State 75
-        -180,
+        -183,
         // State 76
         0,
         // State 77
-        -178,
-        // State 78
         -181,
+        // State 78
+        -184,
         // State 79
         0,
         // State 80
@@ -521858,7 +547491,7 @@
         // State 120
         0,
         // State 121
-        -218,
+        -221,
         // State 122
         0,
         // State 123
@@ -522032,23 +547665,23 @@
             63 => 64,
             65 => 65,
             69 => 44,
-            72 => match state {
+            74 => match state {
                 0 | 32 | 44 => 66,
                 1 => 72,
                 _ => 83,
             },
-            73 => match state {
+            75 => match state {
                 9 => 94,
                 _ => 76,
             },
-            74 => 9,
-            76 => 67,
-            77 => match state {
+            76 => 9,
+            78 => 67,
+            79 => match state {
                 32 => 127,
                 44 => 143,
                 _ => 68,
             },
-            81 => match state {
+            83 => match state {
                 19 => 118,
                 24 => 122,
                 52 => 157,
@@ -522056,26 +547689,26 @@
                 58 => 166,
                 _ => 98,
             },
-            82 => match state {
+            84 => match state {
                 49 => 153,
                 _ => 140,
             },
-            84 => 84,
-            85 => 85,
-            86 => match state {
+            86 => 84,
+            87 => 85,
+            88 => match state {
                 37 => 133,
                 47 => 150,
                 53 => 158,
                 _ => 152,
             },
-            88 => match state {
+            90 => match state {
                 46 => 146,
                 _ => 134,
             },
-            90 => 46,
-            91 => 17,
-            92 => 86,
-            93 => 69,
+            92 => 46,
+            93 => 17,
+            94 => 86,
+            95 => 69,
             _ => 0,
         }
     }
@@ -523317,25 +548950,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -523347,14 +548980,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -523366,19 +548999,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -523390,109 +549023,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -523504,109 +549137,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -523618,43 +549251,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -523666,220 +549299,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 118,
+                }
+            }
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            244 => __state_machine::SimulatedReduce::Accept,
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
-            248 => {
+            248 => __state_machine::SimulatedReduce::Accept,
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => {
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -524688,12 +550345,7 @@
                 __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             244 => {
-                // __Statement = Statement => ActionFn(8);
-                let __sym0 = __pop_Variant53(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action8::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             245 => {
                 __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -524705,7 +550357,12 @@
                 __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Statement = Statement => ActionFn(8);
+                let __sym0 = __pop_Variant55(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action8::<>(__sym0);
+                return Some(Ok(__nt));
             }
             249 => {
                 __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -524728,6 +550385,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -524821,6 +550490,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -524831,13 +550510,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -524921,6 +550600,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -524941,13 +550630,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -525091,66 +550780,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -525161,13 +550850,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -525181,43 +550870,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -525231,13 +550920,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -525271,13 +550960,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -525331,13 +551020,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -525378,10 +551067,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -525392,11 +551081,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -525407,11 +551096,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -525422,13 +551111,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -525439,11 +551128,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -525454,10 +551143,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -525468,11 +551157,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -525483,10 +551172,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -525497,11 +551186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -525512,10 +551201,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -525526,13 +551215,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -525543,13 +551232,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -525560,10 +551249,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -525574,14 +551263,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -525592,14 +551281,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -525610,10 +551299,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -525624,13 +551313,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -525641,13 +551330,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -525658,10 +551347,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -525672,14 +551361,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -525690,14 +551379,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -525708,10 +551397,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -525722,13 +551411,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -525739,10 +551428,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -525753,11 +551442,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -525768,13 +551457,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -525785,14 +551474,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -525803,13 +551492,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -525820,10 +551509,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -525834,11 +551523,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -525849,13 +551538,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -525866,14 +551555,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -525884,13 +551573,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -525901,10 +551590,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -525915,11 +551604,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -525930,13 +551619,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -525947,14 +551636,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -525965,13 +551654,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -525982,10 +551671,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -525996,11 +551685,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -526011,13 +551700,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -526028,14 +551717,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -526046,13 +551735,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -526063,10 +551752,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -526077,11 +551766,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -526092,13 +551781,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -526109,14 +551798,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -526127,13 +551816,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -526144,10 +551833,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -526158,11 +551847,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -526173,13 +551862,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -526190,14 +551879,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -526208,13 +551897,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -526225,10 +551914,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -526239,11 +551928,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -526254,13 +551943,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -526271,14 +551960,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -526289,10 +551978,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -526303,10 +551992,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -526317,14 +552006,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -526335,15 +552024,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -526354,14 +552043,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -526372,15 +552061,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -526391,11 +552080,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -526406,11 +552095,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -526421,11 +552110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -526436,11 +552125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -526451,11 +552140,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -526466,11 +552155,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -526481,11 +552170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -526496,11 +552185,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -526511,11 +552200,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -526526,11 +552215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -526541,11 +552230,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -526556,11 +552245,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -526571,11 +552260,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -526586,11 +552275,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -526601,11 +552290,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -526616,11 +552305,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -526631,14 +552320,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -526649,11 +552338,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -526664,10 +552353,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -526678,13 +552367,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -526695,11 +552384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -526710,11 +552399,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -526725,10 +552414,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -526739,13 +552428,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -526756,11 +552445,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -526771,11 +552460,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -526786,10 +552475,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -526800,13 +552489,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -526817,11 +552506,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -526832,11 +552521,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -526847,10 +552536,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -526861,13 +552550,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -526878,11 +552567,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -526893,11 +552582,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -526908,10 +552597,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -526922,13 +552611,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -526939,11 +552628,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -526954,11 +552643,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -526969,10 +552658,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -526983,13 +552672,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -527000,11 +552689,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -527015,7 +552704,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -527026,7 +552715,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -527037,11 +552726,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -527052,10 +552741,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -527066,13 +552755,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -527083,11 +552772,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -527098,14 +552787,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -527116,11 +552805,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -527131,11 +552820,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -527146,14 +552835,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -527164,13 +552853,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -527181,13 +552870,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -527198,13 +552887,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -527215,11 +552904,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -527230,14 +552919,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -527248,11 +552937,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -527263,14 +552952,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -527281,11 +552970,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -527296,11 +552985,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -527311,10 +553000,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -527325,7 +553014,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -527333,7 +553022,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -527344,14 +553033,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -527362,11 +553051,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -527377,10 +553066,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -527391,7 +553080,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -527400,7 +553089,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -527411,7 +553100,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -527422,7 +553111,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -527433,7 +553122,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -527447,7 +553136,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -527458,7 +553147,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -527470,7 +553159,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -527481,7 +553170,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -527494,7 +553183,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -527505,7 +553194,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -527516,7 +553205,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -527527,7 +553216,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -527540,7 +553229,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -527551,7 +553240,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -527562,7 +553251,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -527573,7 +553262,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -527585,7 +553274,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -527596,7 +553285,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -527606,7 +553295,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -527617,11 +553306,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -527632,11 +553321,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -527647,10 +553336,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -527661,11 +553350,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -527676,7 +553365,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -527685,7 +553374,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -527696,7 +553385,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -527705,7 +553394,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -527716,14 +553405,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -527734,7 +553423,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -527744,7 +553433,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -527755,14 +553444,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -527773,7 +553462,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -527784,7 +553473,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -527795,7 +553484,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -527805,7 +553494,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -527816,9 +553505,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -527827,7 +553516,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -527838,9 +553527,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -527848,7 +553537,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -527859,11 +553548,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -527874,13 +553563,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -527891,11 +553580,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -527906,10 +553595,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -527920,11 +553609,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -527935,13 +553624,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -527952,11 +553641,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -527967,13 +553656,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -527984,7 +553673,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -527994,7 +553683,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -528005,7 +553694,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -528014,7 +553703,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -528025,11 +553714,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -528040,13 +553729,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -528055,13 +553746,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -528070,13 +553761,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -528085,15 +553776,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -528102,11 +553791,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -528117,15 +553806,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -528134,16 +553821,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -528152,11 +553838,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -528167,15 +553853,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -528184,13 +553870,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -528199,12 +553888,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -528213,13 +553903,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -528230,13 +553920,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -528245,13 +553935,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -528260,13 +553949,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -528275,13 +553966,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -528290,15 +553981,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -528307,15 +553996,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -528324,15 +554011,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -528341,15 +554026,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -528358,7 +554043,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -528370,62 +554106,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -528434,12 +554117,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -528448,17 +554137,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -528467,16 +554155,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -528485,16 +554170,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -528503,13 +554184,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -528518,12 +554203,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -528532,15 +554221,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -528550,13 +554239,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -528565,13 +554254,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -528580,13 +554268,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -528595,16 +554286,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -528613,13 +554301,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -528628,15 +554316,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -528645,17 +554331,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -528664,18 +554349,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -528684,13 +554364,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -528699,12 +554381,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -528713,13 +554400,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -528728,15 +554420,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -528745,15 +554435,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -528762,15 +554449,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -528779,12 +554464,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -528793,13 +554481,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -528808,13 +554498,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -528823,15 +554515,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -528840,12 +554529,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -528855,13 +554544,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -528870,13 +554559,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -528885,13 +554576,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -528900,13 +554591,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -528915,13 +554606,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -528930,13 +554621,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -528945,18 +554636,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -528969,9 +554705,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -528984,9 +554720,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -528999,9 +554735,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529014,9 +554750,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529029,9 +554765,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529044,9 +554780,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529059,9 +554795,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529074,9 +554810,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529089,9 +554825,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529104,9 +554840,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529119,9 +554855,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529134,9 +554870,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529149,9 +554885,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529164,9 +554900,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529179,9 +554915,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529194,9 +554930,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529209,9 +554945,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529224,9 +554960,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529239,9 +554975,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529254,53 +554990,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -529308,13 +554999,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -529323,13 +555014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -529338,12 +555029,27 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
+    }
+    pub(crate) fn __reduce244<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathExpr = PathExpr => 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, 119)
     }
     pub(crate) fn __reduce245<
@@ -529353,15 +555059,60 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    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)
+    {
+        // __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529374,9 +555125,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529384,14 +555135,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529404,9 +555155,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529419,9 +555170,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529434,9 +555185,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529449,9 +555200,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529459,14 +555210,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529474,14 +555225,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529489,14 +555240,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -529504,12 +555255,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Statement::StatementParser;
@@ -529579,22 +555330,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -529628,13 +555381,13 @@
         // State 14
         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, 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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -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, -197, 0,
+        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,
         // State 16
         0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 18
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
@@ -529650,15 +555403,15 @@
         // State 25
         0, 0, 0, -56, 0, 0, 0, -56, 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 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, -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, -198, 0,
+        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 27
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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, -95, 0,
         // State 32
@@ -529672,17 +555425,17 @@
         // 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, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0,
         // State 37
-        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, 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, -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, -187, 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, 0, 0, 0, 42, 0,
         // State 39
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,
         // State 40
         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,
         // 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, 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, -200, 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, -200, 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, -203, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -529711,7 +555464,7 @@
         // State 10
         0,
         // State 11
-        -246,
+        -250,
         // State 12
         0,
         // State 13
@@ -529753,7 +555506,7 @@
         // State 31
         0,
         // State 32
-        -183,
+        -186,
         // State 33
         0,
         // State 34
@@ -529771,7 +555524,7 @@
         // State 40
         0,
         // State 41
-        -182,
+        -185,
         // State 42
         0,
     ];
@@ -529794,21 +555547,21 @@
                 5 => 26,
                 _ => 15,
             },
-            78 => 11,
-            79 => match state {
+            80 => 11,
+            81 => match state {
                 6 => 31,
                 _ => 22,
             },
-            86 => match state {
+            88 => match state {
                 4 => 23,
                 8 => 37,
                 _ => 16,
             },
-            88 => match state {
+            90 => match state {
                 5 => 27,
                 _ => 17,
             },
-            90 => 5,
+            92 => 5,
             _ => 0,
         }
     }
@@ -531050,25 +556803,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -531080,14 +556833,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -531099,19 +556852,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -531123,109 +556876,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -531237,109 +556990,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -531351,43 +557104,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -531399,220 +557152,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 119,
+                }
+            }
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            245 => __state_machine::SimulatedReduce::Accept,
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
-            249 => {
+            249 => __state_machine::SimulatedReduce::Accept,
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => {
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -532424,12 +558201,7 @@
                 __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             245 => {
-                // __Struct = Struct => ActionFn(34);
-                let __sym0 = __pop_Variant54(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action34::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             246 => {
                 __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -532441,7 +558213,12 @@
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             249 => {
-                __reduce249(__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));
             }
             250 => {
                 __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -532461,6 +558238,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -532554,6 +558343,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -532564,13 +558363,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -532654,6 +558453,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -532674,13 +558483,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -532824,66 +558633,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -532894,13 +558703,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -532914,43 +558723,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -532964,13 +558773,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -533004,13 +558813,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -533064,13 +558873,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -533111,10 +558920,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -533125,11 +558934,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -533140,11 +558949,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -533155,13 +558964,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -533172,11 +558981,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -533187,10 +558996,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -533201,11 +559010,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -533216,10 +559025,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -533230,11 +559039,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -533245,10 +559054,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -533259,13 +559068,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -533276,13 +559085,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -533293,10 +559102,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -533307,14 +559116,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -533325,14 +559134,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -533343,10 +559152,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -533357,13 +559166,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -533374,13 +559183,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -533391,10 +559200,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -533405,14 +559214,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -533423,14 +559232,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -533441,10 +559250,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -533455,13 +559264,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -533472,10 +559281,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -533486,11 +559295,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -533501,13 +559310,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -533518,14 +559327,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -533536,13 +559345,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -533553,10 +559362,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -533567,11 +559376,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -533582,13 +559391,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -533599,14 +559408,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -533617,13 +559426,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -533634,10 +559443,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -533648,11 +559457,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -533663,13 +559472,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -533680,14 +559489,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -533698,13 +559507,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -533715,10 +559524,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -533729,11 +559538,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -533744,13 +559553,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -533761,14 +559570,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -533779,13 +559588,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -533796,10 +559605,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -533810,11 +559619,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -533825,13 +559634,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -533842,14 +559651,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -533860,13 +559669,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -533877,10 +559686,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -533891,11 +559700,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -533906,13 +559715,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -533923,14 +559732,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -533941,13 +559750,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -533958,10 +559767,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -533972,11 +559781,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -533987,13 +559796,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -534004,14 +559813,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -534022,10 +559831,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -534036,10 +559845,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -534050,14 +559859,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -534068,15 +559877,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -534087,14 +559896,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -534105,15 +559914,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -534124,11 +559933,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -534139,11 +559948,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -534154,11 +559963,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -534169,11 +559978,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -534184,11 +559993,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -534199,11 +560008,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -534214,11 +560023,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -534229,11 +560038,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -534244,11 +560053,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -534259,11 +560068,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -534274,11 +560083,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -534289,11 +560098,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -534304,11 +560113,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -534319,11 +560128,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -534334,11 +560143,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -534349,11 +560158,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -534364,14 +560173,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -534382,11 +560191,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -534397,10 +560206,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -534411,13 +560220,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -534428,11 +560237,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -534443,11 +560252,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -534458,10 +560267,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -534472,13 +560281,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -534489,11 +560298,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -534504,11 +560313,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -534519,10 +560328,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -534533,13 +560342,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -534550,11 +560359,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -534565,11 +560374,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -534580,10 +560389,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -534594,13 +560403,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -534611,11 +560420,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -534626,11 +560435,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -534641,10 +560450,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -534655,13 +560464,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -534672,11 +560481,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -534687,11 +560496,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -534702,10 +560511,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -534716,13 +560525,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -534733,11 +560542,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -534748,7 +560557,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -534759,7 +560568,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -534770,11 +560579,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -534785,10 +560594,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -534799,13 +560608,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -534816,11 +560625,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -534831,14 +560640,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -534849,11 +560658,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -534864,11 +560673,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -534879,14 +560688,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -534897,13 +560706,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -534914,13 +560723,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -534931,13 +560740,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -534948,11 +560757,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -534963,14 +560772,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -534981,11 +560790,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -534996,14 +560805,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -535014,11 +560823,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -535029,11 +560838,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -535044,10 +560853,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -535058,7 +560867,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -535066,7 +560875,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -535077,14 +560886,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -535095,11 +560904,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -535110,10 +560919,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -535124,7 +560933,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -535133,7 +560942,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -535144,7 +560953,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -535155,7 +560964,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -535166,7 +560975,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -535180,7 +560989,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -535191,7 +561000,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -535203,7 +561012,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -535214,7 +561023,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -535227,7 +561036,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -535238,7 +561047,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -535249,7 +561058,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -535260,7 +561069,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -535273,7 +561082,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -535284,7 +561093,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -535295,7 +561104,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -535306,7 +561115,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -535318,7 +561127,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -535329,7 +561138,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -535339,7 +561148,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -535350,11 +561159,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -535365,11 +561174,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -535380,10 +561189,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -535394,11 +561203,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -535409,7 +561218,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -535418,7 +561227,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -535429,7 +561238,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -535438,7 +561247,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -535449,14 +561258,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -535467,7 +561276,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -535477,7 +561286,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -535488,14 +561297,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -535506,7 +561315,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -535517,7 +561326,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -535528,7 +561337,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -535538,7 +561347,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -535549,9 +561358,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -535560,7 +561369,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -535571,9 +561380,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -535581,7 +561390,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -535592,11 +561401,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -535607,13 +561416,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -535624,11 +561433,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -535639,10 +561448,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -535653,11 +561462,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -535668,13 +561477,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -535685,11 +561494,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -535700,13 +561509,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -535717,7 +561526,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -535727,7 +561536,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -535738,7 +561547,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -535747,7 +561556,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -535758,11 +561567,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -535773,13 +561582,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -535788,13 +561599,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -535803,13 +561614,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -535818,15 +561629,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -535835,11 +561644,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -535850,15 +561659,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -535867,16 +561674,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -535885,11 +561691,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -535900,15 +561706,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -535917,13 +561723,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -535932,12 +561741,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -535946,13 +561756,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -535963,13 +561773,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -535978,13 +561788,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -535993,13 +561802,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -536008,13 +561819,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -536023,15 +561834,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -536040,15 +561849,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -536057,15 +561864,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -536074,15 +561879,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -536091,7 +561896,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -536103,62 +561959,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -536167,12 +561970,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -536181,17 +561990,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -536200,16 +562008,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -536218,16 +562023,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -536236,13 +562037,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -536251,12 +562056,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -536265,15 +562074,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -536283,13 +562092,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -536298,13 +562107,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -536313,13 +562121,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -536328,16 +562139,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -536346,13 +562154,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -536361,15 +562169,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -536378,17 +562184,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -536397,18 +562202,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -536417,13 +562217,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -536432,12 +562234,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -536446,13 +562253,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -536461,15 +562273,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -536478,15 +562288,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -536495,15 +562302,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -536512,12 +562317,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -536526,13 +562334,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -536541,13 +562351,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -536556,15 +562368,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -536573,12 +562382,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -536588,13 +562397,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -536603,13 +562412,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -536618,13 +562429,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -536633,13 +562444,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -536648,13 +562459,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -536663,13 +562474,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -536678,18 +562489,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536702,9 +562558,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536717,9 +562573,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536732,9 +562588,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536747,9 +562603,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536762,9 +562618,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536777,9 +562633,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536792,9 +562648,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536807,9 +562663,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536822,9 +562678,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536837,9 +562693,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536852,9 +562708,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536867,9 +562723,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536882,9 +562738,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536897,9 +562753,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536912,9 +562768,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536927,9 +562783,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536942,9 +562798,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536957,9 +562813,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536972,9 +562828,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536987,53 +562843,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -537041,13 +562852,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -537056,13 +562867,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -537071,13 +562882,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -537086,12 +562897,27 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
+    }
+    pub(crate) fn __reduce245<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
         (1, 120)
     }
     pub(crate) fn __reduce246<
@@ -537100,6 +562926,51 @@
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant54(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action12::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 122)
+    }
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce250<
+    >(
+        __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);
@@ -537107,9 +562978,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -537117,14 +562988,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -537137,9 +563008,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -537152,9 +563023,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -537167,9 +563038,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -537182,9 +563053,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -537192,14 +563063,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -537207,14 +563078,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -537222,14 +563093,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -537237,12 +563108,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Struct::StructParser;
@@ -537312,22 +563183,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -537349,25 +563222,25 @@
         // 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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, -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, -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,
         // 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 12
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 17, 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, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, -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, -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 15
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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 20
@@ -537375,7 +563248,7 @@
         // State 21
         0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 23
         0, 0, 0, -56, 0, 0, 0, -56, 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 24
@@ -537383,7 +563256,7 @@
         // State 25
         0, 0, 0, -57, 0, 0, 0, -57, 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 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -537404,13 +563277,13 @@
         // State 6
         0,
         // State 7
-        -247,
+        -251,
         // State 8
         -138,
         // State 9
-        -197,
+        -200,
         // State 10
-        -184,
+        -187,
         // State 11
         0,
         // State 12
@@ -537418,7 +563291,7 @@
         // State 13
         0,
         // State 14
-        -198,
+        -201,
         // State 15
         0,
         // State 16
@@ -537434,7 +563307,7 @@
         // State 21
         0,
         // State 22
-        -199,
+        -202,
         // State 23
         0,
         // State 24
@@ -537442,7 +563315,7 @@
         // State 25
         0,
         // State 26
-        -200,
+        -203,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
@@ -537456,17 +563329,17 @@
                 2 => 14,
                 _ => 9,
             },
-            79 => 7,
-            86 => match state {
+            81 => 7,
+            88 => match state {
                 1 => 10,
                 4 => 21,
                 _ => 20,
             },
-            88 => match state {
+            90 => match state {
                 2 => 15,
                 _ => 11,
             },
-            90 => 2,
+            92 => 2,
             _ => 0,
         }
     }
@@ -538708,25 +564581,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -538738,14 +564611,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -538757,19 +564630,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -538781,109 +564654,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -538895,109 +564768,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -539009,43 +564882,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -539057,220 +564930,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 120,
+                }
+            }
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            246 => __state_machine::SimulatedReduce::Accept,
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
             249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 124,
                 }
             }
-            250 => {
+            250 => __state_machine::SimulatedReduce::Accept,
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => {
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -540085,12 +565982,7 @@
                 __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             246 => {
-                // __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));
+                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             247 => {
                 __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -540102,7 +565994,12 @@
                 __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             250 => {
-                __reduce250(__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));
             }
             251 => {
                 __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -540119,6 +566016,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -540212,6 +566121,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -540222,13 +566141,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -540312,6 +566231,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -540332,13 +566261,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -540482,66 +566411,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -540552,13 +566481,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -540572,43 +566501,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -540622,13 +566551,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -540662,13 +566591,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -540722,13 +566651,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -540769,10 +566698,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -540783,11 +566712,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -540798,11 +566727,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -540813,13 +566742,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -540830,11 +566759,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -540845,10 +566774,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -540859,11 +566788,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -540874,10 +566803,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -540888,11 +566817,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -540903,10 +566832,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -540917,13 +566846,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -540934,13 +566863,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -540951,10 +566880,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -540965,14 +566894,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -540983,14 +566912,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -541001,10 +566930,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -541015,13 +566944,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -541032,13 +566961,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -541049,10 +566978,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -541063,14 +566992,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -541081,14 +567010,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -541099,10 +567028,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -541113,13 +567042,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -541130,10 +567059,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -541144,11 +567073,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -541159,13 +567088,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -541176,14 +567105,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -541194,13 +567123,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -541211,10 +567140,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -541225,11 +567154,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -541240,13 +567169,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -541257,14 +567186,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -541275,13 +567204,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -541292,10 +567221,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -541306,11 +567235,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -541321,13 +567250,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -541338,14 +567267,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -541356,13 +567285,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -541373,10 +567302,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -541387,11 +567316,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -541402,13 +567331,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -541419,14 +567348,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -541437,13 +567366,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -541454,10 +567383,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -541468,11 +567397,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -541483,13 +567412,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -541500,14 +567429,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -541518,13 +567447,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -541535,10 +567464,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -541549,11 +567478,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -541564,13 +567493,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -541581,14 +567510,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -541599,13 +567528,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -541616,10 +567545,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -541630,11 +567559,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -541645,13 +567574,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -541662,14 +567591,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -541680,10 +567609,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -541694,10 +567623,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -541708,14 +567637,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -541726,15 +567655,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -541745,14 +567674,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -541763,15 +567692,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -541782,11 +567711,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -541797,11 +567726,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -541812,11 +567741,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -541827,11 +567756,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -541842,11 +567771,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -541857,11 +567786,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -541872,11 +567801,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -541887,11 +567816,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -541902,11 +567831,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -541917,11 +567846,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -541932,11 +567861,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -541947,11 +567876,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -541962,11 +567891,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -541977,11 +567906,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -541992,11 +567921,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -542007,11 +567936,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -542022,14 +567951,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -542040,11 +567969,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -542055,10 +567984,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -542069,13 +567998,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -542086,11 +568015,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -542101,11 +568030,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -542116,10 +568045,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -542130,13 +568059,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -542147,11 +568076,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -542162,11 +568091,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -542177,10 +568106,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -542191,13 +568120,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -542208,11 +568137,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -542223,11 +568152,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -542238,10 +568167,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -542252,13 +568181,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -542269,11 +568198,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -542284,11 +568213,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -542299,10 +568228,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -542313,13 +568242,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -542330,11 +568259,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -542345,11 +568274,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -542360,10 +568289,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -542374,13 +568303,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -542391,11 +568320,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -542406,7 +568335,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -542417,7 +568346,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -542428,11 +568357,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -542443,10 +568372,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -542457,13 +568386,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -542474,11 +568403,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -542489,14 +568418,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -542507,11 +568436,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -542522,11 +568451,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -542537,14 +568466,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -542555,13 +568484,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -542572,13 +568501,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -542589,13 +568518,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -542606,11 +568535,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -542621,14 +568550,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -542639,11 +568568,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -542654,14 +568583,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -542672,11 +568601,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -542687,11 +568616,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -542702,10 +568631,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -542716,7 +568645,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -542724,7 +568653,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -542735,14 +568664,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -542753,11 +568682,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -542768,10 +568697,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -542782,7 +568711,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -542791,7 +568720,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -542802,7 +568731,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -542813,7 +568742,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -542824,7 +568753,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -542838,7 +568767,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -542849,7 +568778,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -542861,7 +568790,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -542872,7 +568801,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -542885,7 +568814,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -542896,7 +568825,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -542907,7 +568836,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -542918,7 +568847,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -542931,7 +568860,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -542942,7 +568871,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -542953,7 +568882,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -542964,7 +568893,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -542976,7 +568905,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -542987,7 +568916,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -542997,7 +568926,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -543008,11 +568937,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -543023,11 +568952,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -543038,10 +568967,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -543052,11 +568981,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -543067,7 +568996,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -543076,7 +569005,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -543087,7 +569016,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -543096,7 +569025,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -543107,14 +569036,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -543125,7 +569054,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -543135,7 +569064,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -543146,14 +569075,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -543164,7 +569093,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -543175,7 +569104,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -543186,7 +569115,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -543196,7 +569125,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -543207,9 +569136,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -543218,7 +569147,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -543229,9 +569158,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -543239,7 +569168,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -543250,11 +569179,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -543265,13 +569194,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -543282,11 +569211,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -543297,10 +569226,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -543311,11 +569240,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -543326,13 +569255,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -543343,11 +569272,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -543358,13 +569287,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -543375,7 +569304,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -543385,7 +569314,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -543396,7 +569325,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -543405,7 +569334,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -543416,11 +569345,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -543431,13 +569360,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -543446,13 +569377,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -543461,13 +569392,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -543476,15 +569407,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -543493,11 +569422,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -543508,15 +569437,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -543525,16 +569452,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -543543,11 +569469,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -543558,15 +569484,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -543575,13 +569501,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -543590,12 +569519,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -543604,13 +569534,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -543621,13 +569551,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -543636,13 +569566,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -543651,13 +569580,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -543666,13 +569597,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -543681,15 +569612,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -543698,15 +569627,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -543715,15 +569642,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -543732,15 +569657,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -543749,7 +569674,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -543761,62 +569737,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -543825,12 +569748,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -543839,17 +569768,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -543858,16 +569786,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -543876,16 +569801,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -543894,13 +569815,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -543909,12 +569834,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -543923,15 +569852,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -543941,13 +569870,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -543956,13 +569885,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -543971,13 +569899,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -543986,16 +569917,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -544004,13 +569932,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -544019,15 +569947,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -544036,17 +569962,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -544055,18 +569980,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -544075,13 +569995,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -544090,12 +570012,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -544104,13 +570031,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -544119,15 +570051,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -544136,15 +570066,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -544153,15 +570080,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -544170,12 +570095,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -544184,13 +570112,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -544199,13 +570129,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -544214,15 +570146,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -544231,12 +570160,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -544246,13 +570175,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -544261,13 +570190,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -544276,13 +570207,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -544291,13 +570222,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -544306,13 +570237,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -544321,13 +570252,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -544336,18 +570267,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544360,9 +570336,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544375,9 +570351,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544390,9 +570366,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544405,9 +570381,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544420,9 +570396,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544435,9 +570411,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544450,9 +570426,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544465,9 +570441,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544480,9 +570456,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544495,9 +570471,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544510,9 +570486,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544525,9 +570501,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544540,9 +570516,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544555,9 +570531,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544570,9 +570546,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544585,9 +570561,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544600,9 +570576,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544615,9 +570591,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544630,9 +570606,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544645,53 +570621,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -544699,13 +570630,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -544714,13 +570645,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -544729,13 +570660,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -544744,13 +570675,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -544759,12 +570690,27 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
-        let __sym0 = __pop_Variant54(__symbols);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (1, 121)
     }
     pub(crate) fn __reduce247<
@@ -544774,15 +570720,60 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(29);
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
+        let __sym0 = __pop_Variant54(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action12::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 122)
+    }
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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::__action29::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        (1, 124)
     }
-    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)
+    {
+        // __StructInitExpr = StructInitExpr => ActionFn(29);
+        let __sym0 = __pop_Variant58(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action29::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
+    }
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544795,9 +570786,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544810,9 +570801,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544825,9 +570816,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544840,9 +570831,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544850,14 +570841,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544865,14 +570856,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544880,14 +570871,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -544895,12 +570886,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__StructField::StructFieldParser;
@@ -544970,22 +570961,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -545005,13 +570998,13 @@
         // State 7
         0, 0, 0, 46, 0, 0, 0, 47, 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
-        0, 0, 0, 76, 0, 0, 0, 0, 77, -188, 78, 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, 80, 0, -188, 0,
+        0, 0, 0, 76, 0, 0, 0, 0, 77, -191, 78, 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, 80, 0, -191, 0,
         // State 9
         0, 81, -121, -121, 82, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 83, 84, 0, 85, 86, 87, 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, 88, -121, 0,
         // State 10
         0, 0, 89, -111, 0, 0, -111, 90, -111, -111, -111, 0, 0, 0, 91, 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, -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,
+        0, -169, -169, -169, -169, 22, -169, -169, -169, -169, -169, 0, 23, 0, -169, 0, 38, 0, -169, -169, 0, -169, -169, -169, 24, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 12
         68, 0, 0, 14, 0, 15, 0, 16, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 37, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 13
@@ -545029,7 +571022,7 @@
         // State 19
         68, 0, 0, 14, 0, 15, 0, 16, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 37, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 20
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 23, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 24, -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 21
         68, 0, 0, 14, 0, 15, -82, 16, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 37, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 22
@@ -545037,7 +571030,7 @@
         // State 23
         68, 0, 0, 14, 0, 15, 0, 16, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 37, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 24
-        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,
+        0, -169, -169, -169, -169, 22, -169, -169, -169, -169, -169, 0, 23, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 24, -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 25
         68, 0, 0, 14, 0, 15, 0, 16, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 37, 0, 0, 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 73,
         // State 26
@@ -545073,19 +571066,19 @@
         // State 41
         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,
         // State 42
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -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, -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, 0, 0,
         // State 43
         0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 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
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 45
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 56, 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, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 47
         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, -99, 0,
         // State 48
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 50
@@ -545095,15 +571088,15 @@
         // State 52
         0, 0, 0, -56, 0, 0, 0, -56, 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 53
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, -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, -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 54
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 55
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 56
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 57
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 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, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
         // State 59
@@ -545111,29 +571104,29 @@
         // State 60
         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 61
-        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, -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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // State 63
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 64
         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 65
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 66
-        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, -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 67
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 68
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 69
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 70
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 71
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 72
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 73
         0, 0, 0, -57, 0, 0, 0, -57, 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 74
@@ -545171,7 +571164,7 @@
         // State 90
         -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 91
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 92
         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 93
@@ -545181,31 +571174,31 @@
         // State 95
         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 96
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 97
         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 98
         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 99
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 100
         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 101
-        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, -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 102
         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 103
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 104
-        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, -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 105
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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 106
         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 107
         -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 108
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 0,
         // State 109
         -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,
     ];
@@ -545284,7 +571277,7 @@
         // State 34
         0,
         // State 35
-        -248,
+        -252,
         // State 36
         0,
         // State 37
@@ -545310,7 +571303,7 @@
         // State 47
         0,
         // State 48
-        -187,
+        -190,
         // State 49
         0,
         // State 50
@@ -545484,34 +571477,34 @@
                 _ => 24,
             },
             62 => 34,
-            72 => 62,
-            73 => match state {
+            74 => 62,
+            75 => match state {
                 20 => 99,
                 _ => 91,
             },
-            74 => 20,
-            81 => match state {
+            76 => 20,
+            83 => match state {
                 6 => 63,
                 14 => 94,
                 _ => 35,
             },
-            82 => match state {
+            84 => match state {
                 3 => 47,
                 _ => 40,
             },
-            84 => 64,
-            85 => 65,
-            86 => match state {
+            86 => 64,
+            87 => 65,
+            88 => match state {
                 4 => 50,
                 _ => 43,
             },
-            88 => match state {
+            90 => match state {
                 5 => 54,
                 _ => 44,
             },
-            90 => 5,
-            91 => 12,
-            92 => 66,
+            92 => 5,
+            93 => 12,
+            94 => 66,
             _ => 0,
         }
     }
@@ -546753,25 +572746,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -546783,14 +572776,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -546802,19 +572795,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -546826,109 +572819,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -546940,109 +572933,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -547054,43 +573047,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -547102,220 +573095,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 121,
+                }
+            }
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            247 => __state_machine::SimulatedReduce::Accept,
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
             249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 124,
                 }
             }
             250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 126,
+                    nonterminal_produced: 125,
                 }
             }
-            251 => {
+            251 => __state_machine::SimulatedReduce::Accept,
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => {
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -548133,12 +574150,7 @@
                 __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             247 => {
-                // __StructInitExpr = StructInitExpr => ActionFn(29);
-                let __sym0 = __pop_Variant56(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action29::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -548150,7 +574162,12 @@
                 __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             251 => {
-                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __StructInitExpr = StructInitExpr => ActionFn(29);
+                let __sym0 = __pop_Variant58(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action29::<>(__sym0);
+                return Some(Ok(__nt));
             }
             252 => {
                 __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -548164,6 +574181,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -548257,6 +574286,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -548267,13 +574306,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -548357,6 +574396,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -548377,13 +574426,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -548527,66 +574576,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -548597,13 +574646,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -548617,43 +574666,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -548667,13 +574716,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -548707,13 +574756,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -548767,13 +574816,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -548814,10 +574863,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -548828,11 +574877,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -548843,11 +574892,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -548858,13 +574907,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -548875,11 +574924,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -548890,10 +574939,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -548904,11 +574953,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -548919,10 +574968,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -548933,11 +574982,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -548948,10 +574997,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -548962,13 +575011,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -548979,13 +575028,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -548996,10 +575045,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -549010,14 +575059,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -549028,14 +575077,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -549046,10 +575095,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -549060,13 +575109,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -549077,13 +575126,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -549094,10 +575143,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -549108,14 +575157,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -549126,14 +575175,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -549144,10 +575193,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -549158,13 +575207,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -549175,10 +575224,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -549189,11 +575238,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -549204,13 +575253,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -549221,14 +575270,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -549239,13 +575288,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -549256,10 +575305,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -549270,11 +575319,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -549285,13 +575334,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -549302,14 +575351,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -549320,13 +575369,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -549337,10 +575386,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -549351,11 +575400,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -549366,13 +575415,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -549383,14 +575432,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -549401,13 +575450,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -549418,10 +575467,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -549432,11 +575481,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -549447,13 +575496,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -549464,14 +575513,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -549482,13 +575531,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -549499,10 +575548,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -549513,11 +575562,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -549528,13 +575577,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -549545,14 +575594,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -549563,13 +575612,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -549580,10 +575629,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -549594,11 +575643,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -549609,13 +575658,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -549626,14 +575675,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -549644,13 +575693,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -549661,10 +575710,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -549675,11 +575724,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -549690,13 +575739,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -549707,14 +575756,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -549725,10 +575774,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -549739,10 +575788,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -549753,14 +575802,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -549771,15 +575820,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -549790,14 +575839,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -549808,15 +575857,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -549827,11 +575876,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -549842,11 +575891,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -549857,11 +575906,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -549872,11 +575921,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -549887,11 +575936,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -549902,11 +575951,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -549917,11 +575966,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -549932,11 +575981,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -549947,11 +575996,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -549962,11 +576011,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -549977,11 +576026,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -549992,11 +576041,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -550007,11 +576056,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -550022,11 +576071,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -550037,11 +576086,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -550052,11 +576101,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -550067,14 +576116,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -550085,11 +576134,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -550100,10 +576149,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -550114,13 +576163,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -550131,11 +576180,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -550146,11 +576195,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -550161,10 +576210,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -550175,13 +576224,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -550192,11 +576241,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -550207,11 +576256,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -550222,10 +576271,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -550236,13 +576285,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -550253,11 +576302,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -550268,11 +576317,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -550283,10 +576332,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -550297,13 +576346,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -550314,11 +576363,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -550329,11 +576378,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -550344,10 +576393,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -550358,13 +576407,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -550375,11 +576424,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -550390,11 +576439,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -550405,10 +576454,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -550419,13 +576468,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -550436,11 +576485,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -550451,7 +576500,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -550462,7 +576511,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -550473,11 +576522,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -550488,10 +576537,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -550502,13 +576551,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -550519,11 +576568,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -550534,14 +576583,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -550552,11 +576601,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -550567,11 +576616,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -550582,14 +576631,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -550600,13 +576649,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -550617,13 +576666,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -550634,13 +576683,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -550651,11 +576700,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -550666,14 +576715,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -550684,11 +576733,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -550699,14 +576748,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -550717,11 +576766,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -550732,11 +576781,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -550747,10 +576796,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -550761,7 +576810,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -550769,7 +576818,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -550780,14 +576829,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -550798,11 +576847,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -550813,10 +576862,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -550827,7 +576876,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -550836,7 +576885,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -550847,7 +576896,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -550858,7 +576907,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -550869,7 +576918,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -550883,7 +576932,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -550894,7 +576943,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -550906,7 +576955,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -550917,7 +576966,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -550930,7 +576979,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -550941,7 +576990,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -550952,7 +577001,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -550963,7 +577012,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -550976,7 +577025,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -550987,7 +577036,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -550998,7 +577047,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -551009,7 +577058,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -551021,7 +577070,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -551032,7 +577081,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -551042,7 +577091,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -551053,11 +577102,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -551068,11 +577117,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -551083,10 +577132,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -551097,11 +577146,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -551112,7 +577161,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -551121,7 +577170,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -551132,7 +577181,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -551141,7 +577190,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -551152,14 +577201,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -551170,7 +577219,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -551180,7 +577229,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -551191,14 +577240,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -551209,7 +577258,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -551220,7 +577269,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -551231,7 +577280,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -551241,7 +577290,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -551252,9 +577301,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -551263,7 +577312,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -551274,9 +577323,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -551284,7 +577333,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -551295,11 +577344,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -551310,13 +577359,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -551327,11 +577376,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -551342,10 +577391,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -551356,11 +577405,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -551371,13 +577420,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -551388,11 +577437,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -551403,13 +577452,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -551420,7 +577469,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -551430,7 +577479,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -551441,7 +577490,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -551450,7 +577499,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -551461,11 +577510,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -551476,13 +577525,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -551491,13 +577542,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -551506,13 +577557,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -551521,15 +577572,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -551538,11 +577587,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -551553,15 +577602,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -551570,16 +577617,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -551588,11 +577634,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -551603,15 +577649,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -551620,13 +577666,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -551635,12 +577684,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -551649,13 +577699,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -551666,13 +577716,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -551681,13 +577731,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -551696,13 +577745,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -551711,13 +577762,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -551726,15 +577777,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -551743,15 +577792,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -551760,15 +577807,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -551777,15 +577822,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -551794,7 +577839,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -551806,62 +577902,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -551870,12 +577913,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -551884,17 +577933,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -551903,16 +577951,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -551921,16 +577966,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -551939,13 +577980,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -551954,12 +577999,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -551968,15 +578017,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -551986,13 +578035,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -552001,13 +578050,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -552016,13 +578064,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -552031,16 +578082,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -552049,13 +578097,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -552064,15 +578112,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -552081,17 +578127,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -552100,18 +578145,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -552120,13 +578160,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -552135,12 +578177,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -552149,13 +578196,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -552164,15 +578216,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -552181,15 +578231,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -552198,15 +578245,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -552215,12 +578260,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -552229,13 +578277,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -552244,13 +578294,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -552259,15 +578311,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -552276,12 +578325,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -552291,13 +578340,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -552306,13 +578355,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -552321,13 +578372,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -552336,13 +578387,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -552351,13 +578402,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -552366,13 +578417,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -552381,18 +578432,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552405,9 +578501,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552420,9 +578516,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552435,9 +578531,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552450,9 +578546,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552465,9 +578561,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552480,9 +578576,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552495,9 +578591,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552510,9 +578606,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552525,9 +578621,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552540,9 +578636,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552555,9 +578651,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552570,9 +578666,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552585,9 +578681,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552600,9 +578696,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552615,9 +578711,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552630,9 +578726,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552645,9 +578741,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552660,9 +578756,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552675,9 +578771,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552690,53 +578786,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -552744,13 +578795,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -552759,13 +578810,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -552774,13 +578825,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -552789,13 +578840,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -552804,15 +578855,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552825,9 +578936,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552840,9 +578951,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552855,9 +578966,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552870,9 +578981,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552885,9 +578996,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552895,14 +579006,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552910,14 +579021,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552925,14 +579036,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -552940,12 +579051,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__StructInitExpr::StructInitExprParser;
@@ -553015,22 +579126,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -553038,13 +579151,13 @@
         // State 1
         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
-        0, 0, 0, 52, 0, 0, 0, 0, 53, -188, 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, -188, 0,
+        0, 0, 0, 52, 0, 0, 0, 0, 53, -191, 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, -191, 0,
         // State 3
         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
         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, -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,
+        0, -169, -169, -169, -169, 15, -169, -169, -169, -169, -169, 0, 16, 0, -169, 0, 69, 0, -169, -169, 0, -169, -169, -169, 17, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 6
         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
@@ -553060,7 +579173,7 @@
         // State 12
         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
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 16, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 17, -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 14
         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
@@ -553070,7 +579183,7 @@
         // 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, -98, 0,
         // State 18
-        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,
+        0, -169, -169, -169, -169, 15, -169, -169, -169, -169, -169, 0, 16, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 17, -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 19
         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
@@ -553110,31 +579223,31 @@
         // State 37
         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, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 0,
         // State 41
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 44
-        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, -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
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 46
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 47
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 0,
         // State 48
-        0, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 49
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 50
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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
@@ -553168,7 +579281,7 @@
         // State 66
         -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, -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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 68
         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
@@ -553182,11 +579295,11 @@
         // 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, -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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 75
         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, -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, -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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 78
@@ -553194,9 +579307,9 @@
         // State 79
         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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 81
-        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, -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 82
         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
@@ -553204,21 +579317,21 @@
         // State 84
         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 85
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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,
         // State 86
         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 87
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 88
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 101, 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, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 90
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 0,
         // State 91
         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, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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
@@ -553230,15 +579343,15 @@
         // State 97
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -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, -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 99
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 104
@@ -553246,11 +579359,11 @@
         // State 105
         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, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -553261,13 +579374,13 @@
         // State 1
         0,
         // State 2
-        -188,
+        -191,
         // State 3
         -121,
         // State 4
         -111,
         // State 5
-        -166,
+        -169,
         // State 6
         0,
         // State 7
@@ -553283,7 +579396,7 @@
         // State 12
         0,
         // State 13
-        -165,
+        -168,
         // State 14
         0,
         // State 15
@@ -553293,7 +579406,7 @@
         // State 17
         0,
         // State 18
-        -166,
+        -169,
         // State 19
         0,
         // State 20
@@ -553325,7 +579438,7 @@
         // State 33
         0,
         // State 34
-        -249,
+        -253,
         // State 35
         -138,
         // State 36
@@ -553333,29 +579446,29 @@
         // State 37
         -119,
         // State 38
-        -195,
+        -198,
         // State 39
         0,
         // State 40
-        -217,
+        -220,
         // State 41
-        -189,
+        -192,
         // State 42
         -112,
         // State 43
-        -193,
+        -196,
         // State 44
-        -194,
+        -197,
         // State 45
         0,
         // State 46
         0,
         // State 47
-        -215,
+        -218,
         // State 48
-        -214,
+        -217,
         // State 49
-        -216,
+        -219,
         // State 50
         0,
         // State 51
@@ -553391,7 +579504,7 @@
         // State 66
         0,
         // State 67
-        -169,
+        -172,
         // State 68
         0,
         // State 69
@@ -553405,11 +579518,11 @@
         // State 73
         -118,
         // State 74
-        -170,
+        -173,
         // State 75
         0,
         // State 76
-        -167,
+        -170,
         // State 77
         0,
         // State 78
@@ -553417,9 +579530,9 @@
         // State 79
         -113,
         // State 80
-        -192,
+        -195,
         // State 81
-        -196,
+        -199,
         // State 82
         -124,
         // State 83
@@ -553437,11 +579550,11 @@
         // State 89
         0,
         // State 90
-        -168,
+        -171,
         // State 91
         0,
         // State 92
-        -187,
+        -190,
         // State 93
         0,
         // State 94
@@ -553524,34 +579637,34 @@
                 _ => 18,
             },
             62 => 39,
-            72 => 40,
-            73 => match state {
+            74 => 40,
+            75 => match state {
                 13 => 74,
                 _ => 67,
             },
-            74 => 13,
-            81 => match state {
+            76 => 13,
+            83 => match state {
                 8 => 71,
                 _ => 41,
             },
-            82 => match state {
+            84 => match state {
                 17 => 78,
                 27 => 91,
                 _ => 34,
             },
-            84 => 42,
-            85 => 43,
-            86 => match state {
+            86 => 42,
+            87 => 43,
+            88 => match state {
                 29 => 95,
                 _ => 86,
             },
-            88 => match state {
+            90 => match state {
                 30 => 99,
                 _ => 87,
             },
-            90 => 30,
-            91 => 6,
-            92 => 44,
+            92 => 30,
+            93 => 6,
+            94 => 44,
             _ => 0,
         }
     }
@@ -554793,25 +580906,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -554823,14 +580936,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -554842,19 +580955,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -554866,109 +580979,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -554980,109 +581093,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -555094,43 +581207,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -555142,220 +581255,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 122,
+                }
+            }
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            248 => __state_machine::SimulatedReduce::Accept,
             249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 124,
                 }
             }
             250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 126,
+                    nonterminal_produced: 125,
                 }
             }
             251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 127,
+                    nonterminal_produced: 126,
                 }
             }
-            252 => {
+            252 => __state_machine::SimulatedReduce::Accept,
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => {
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -556176,12 +582313,7 @@
                 __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             248 => {
-                // __StructInitField = StructInitField => ActionFn(28);
-                let __sym0 = __pop_Variant22(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action28::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             249 => {
                 __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -556193,7 +582325,12 @@
                 __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             252 => {
-                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __StructInitField = StructInitField => ActionFn(28);
+                let __sym0 = __pop_Variant22(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action28::<>(__sym0);
+                return Some(Ok(__nt));
             }
             253 => {
                 __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -556204,6 +582341,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -556297,6 +582446,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -556307,13 +582466,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -556397,6 +582556,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -556417,13 +582586,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -556567,66 +582736,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -556637,13 +582806,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -556657,43 +582826,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -556707,13 +582876,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -556747,13 +582916,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -556807,13 +582976,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -556854,10 +583023,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -556868,11 +583037,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -556883,11 +583052,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -556898,13 +583067,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -556915,11 +583084,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -556930,10 +583099,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -556944,11 +583113,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -556959,10 +583128,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -556973,11 +583142,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -556988,10 +583157,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -557002,13 +583171,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -557019,13 +583188,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -557036,10 +583205,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -557050,14 +583219,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -557068,14 +583237,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -557086,10 +583255,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -557100,13 +583269,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -557117,13 +583286,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -557134,10 +583303,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -557148,14 +583317,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -557166,14 +583335,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -557184,10 +583353,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -557198,13 +583367,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -557215,10 +583384,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -557229,11 +583398,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -557244,13 +583413,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -557261,14 +583430,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -557279,13 +583448,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -557296,10 +583465,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -557310,11 +583479,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -557325,13 +583494,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -557342,14 +583511,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -557360,13 +583529,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -557377,10 +583546,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -557391,11 +583560,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -557406,13 +583575,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -557423,14 +583592,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -557441,13 +583610,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -557458,10 +583627,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -557472,11 +583641,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -557487,13 +583656,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -557504,14 +583673,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -557522,13 +583691,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -557539,10 +583708,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -557553,11 +583722,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -557568,13 +583737,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -557585,14 +583754,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -557603,13 +583772,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -557620,10 +583789,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -557634,11 +583803,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -557649,13 +583818,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -557666,14 +583835,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -557684,13 +583853,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -557701,10 +583870,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -557715,11 +583884,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -557730,13 +583899,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -557747,14 +583916,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -557765,10 +583934,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -557779,10 +583948,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -557793,14 +583962,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -557811,15 +583980,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -557830,14 +583999,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -557848,15 +584017,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -557867,11 +584036,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -557882,11 +584051,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -557897,11 +584066,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -557912,11 +584081,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -557927,11 +584096,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -557942,11 +584111,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -557957,11 +584126,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -557972,11 +584141,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -557987,11 +584156,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -558002,11 +584171,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -558017,11 +584186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -558032,11 +584201,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -558047,11 +584216,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -558062,11 +584231,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -558077,11 +584246,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -558092,11 +584261,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -558107,14 +584276,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -558125,11 +584294,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -558140,10 +584309,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -558154,13 +584323,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -558171,11 +584340,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -558186,11 +584355,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -558201,10 +584370,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -558215,13 +584384,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -558232,11 +584401,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -558247,11 +584416,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -558262,10 +584431,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -558276,13 +584445,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -558293,11 +584462,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -558308,11 +584477,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -558323,10 +584492,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -558337,13 +584506,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -558354,11 +584523,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -558369,11 +584538,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -558384,10 +584553,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -558398,13 +584567,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -558415,11 +584584,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -558430,11 +584599,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -558445,10 +584614,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -558459,13 +584628,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -558476,11 +584645,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -558491,7 +584660,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -558502,7 +584671,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -558513,11 +584682,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -558528,10 +584697,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -558542,13 +584711,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -558559,11 +584728,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -558574,14 +584743,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -558592,11 +584761,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -558607,11 +584776,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -558622,14 +584791,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -558640,13 +584809,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -558657,13 +584826,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -558674,13 +584843,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -558691,11 +584860,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -558706,14 +584875,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -558724,11 +584893,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -558739,14 +584908,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -558757,11 +584926,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -558772,11 +584941,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -558787,10 +584956,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -558801,7 +584970,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -558809,7 +584978,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -558820,14 +584989,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -558838,11 +585007,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -558853,10 +585022,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -558867,7 +585036,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -558876,7 +585045,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -558887,7 +585056,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -558898,7 +585067,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -558909,7 +585078,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -558923,7 +585092,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -558934,7 +585103,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -558946,7 +585115,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -558957,7 +585126,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -558970,7 +585139,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -558981,7 +585150,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -558992,7 +585161,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -559003,7 +585172,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -559016,7 +585185,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -559027,7 +585196,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -559038,7 +585207,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -559049,7 +585218,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -559061,7 +585230,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -559072,7 +585241,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -559082,7 +585251,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -559093,11 +585262,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -559108,11 +585277,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -559123,10 +585292,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -559137,11 +585306,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -559152,7 +585321,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -559161,7 +585330,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -559172,7 +585341,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -559181,7 +585350,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -559192,14 +585361,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -559210,7 +585379,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -559220,7 +585389,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -559231,14 +585400,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -559249,7 +585418,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -559260,7 +585429,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -559271,7 +585440,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -559281,7 +585450,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -559292,9 +585461,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -559303,7 +585472,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -559314,9 +585483,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -559324,7 +585493,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -559335,11 +585504,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -559350,13 +585519,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -559367,11 +585536,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -559382,10 +585551,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -559396,11 +585565,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -559411,13 +585580,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -559428,11 +585597,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -559443,13 +585612,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -559460,7 +585629,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -559470,7 +585639,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -559481,7 +585650,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -559490,7 +585659,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -559501,11 +585670,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -559516,13 +585685,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -559531,13 +585702,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -559546,13 +585717,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -559561,15 +585732,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -559578,11 +585747,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -559593,15 +585762,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -559610,16 +585777,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -559628,11 +585794,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -559643,15 +585809,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -559660,13 +585826,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -559675,12 +585844,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -559689,13 +585859,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -559706,13 +585876,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -559721,13 +585891,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -559736,13 +585905,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -559751,13 +585922,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -559766,15 +585937,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -559783,15 +585952,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -559800,15 +585967,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -559817,15 +585982,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -559834,7 +585999,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -559846,62 +586062,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -559910,12 +586073,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -559924,17 +586093,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -559943,16 +586111,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -559961,16 +586126,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -559979,13 +586140,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -559994,12 +586159,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -560008,15 +586177,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -560026,13 +586195,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -560041,13 +586210,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -560056,13 +586224,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -560071,16 +586242,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -560089,13 +586257,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -560104,15 +586272,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -560121,17 +586287,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -560140,18 +586305,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -560160,13 +586320,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -560175,12 +586337,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -560189,13 +586356,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -560204,15 +586376,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -560221,15 +586391,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -560238,15 +586405,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -560255,12 +586420,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -560269,13 +586437,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -560284,13 +586454,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -560299,15 +586471,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -560316,12 +586485,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -560331,13 +586500,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -560346,13 +586515,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -560361,13 +586532,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -560376,13 +586547,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -560391,13 +586562,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -560406,13 +586577,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -560421,18 +586592,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560445,9 +586661,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560460,9 +586676,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560475,9 +586691,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560490,9 +586706,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560505,9 +586721,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560520,9 +586736,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560535,9 +586751,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560550,9 +586766,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560565,9 +586781,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560580,9 +586796,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560595,9 +586811,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560610,9 +586826,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560625,9 +586841,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560640,9 +586856,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560655,9 +586871,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560670,9 +586886,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560685,9 +586901,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560700,9 +586916,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560715,9 +586931,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560730,53 +586946,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -560784,13 +586955,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -560799,13 +586970,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -560814,13 +586985,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -560829,13 +587000,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -560844,15 +587015,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560865,9 +587096,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560875,14 +587106,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560895,9 +587126,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560910,9 +587141,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560925,9 +587156,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560935,14 +587166,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560950,14 +587181,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560965,14 +587196,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -560980,12 +587211,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__StructInitField::StructInitFieldParser;
@@ -561055,32 +587286,34 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     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, 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, -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,
+        0, -169, -169, -169, -169, 5, -169, -169, -169, -169, -169, 0, 6, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 7, -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 2
         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, -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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 6, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 7, -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 4
         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
@@ -561094,7 +587327,7 @@
         // State 9
         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, -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,
+        0, -169, -169, -169, -169, 5, -169, -169, -169, -169, -169, 0, 6, 0, -169, 0, 72, 0, -169, -169, 0, -169, -169, -169, 7, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 11
         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
@@ -561136,29 +587369,29 @@
         // State 30
         0, 0, 0, 90, 0, 0, 0, 91, 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, 55, 0, 0, 0, 0, 57, -188, 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, -188, 0,
+        0, 0, 0, 55, 0, 0, 0, 0, 57, -191, 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, -191, 0,
         // State 32
         0, 0, 0, 90, 0, 0, 0, 91, 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, -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, -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 34
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 36
-        0, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 37
-        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, -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, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 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, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 41
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 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,
         // State 44
@@ -561170,21 +587403,21 @@
         // 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,
         // State 48
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 49
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 50
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 51
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // State 52
         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, -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, -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 54
         -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
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 56
         -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
@@ -561218,7 +587451,7 @@
         // State 71
         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, -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, -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 73
         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
@@ -561230,7 +587463,7 @@
         // State 77
         -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, -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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 0,
         // 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,
         // State 80
@@ -561246,19 +587479,19 @@
         // State 85
         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 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 31, 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,
         // State 87
         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 88
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 89
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 100, 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, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
         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, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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
@@ -561268,29 +587501,29 @@
         // State 96
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -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, -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 98
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 103
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 104
         0, 0, 0, -57, 0, 0, 0, -57, 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 105
         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, 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, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -561299,11 +587532,11 @@
         // State 0
         0,
         // State 1
-        -166,
+        -169,
         // State 2
         0,
         // State 3
-        -165,
+        -168,
         // State 4
         0,
         // State 5
@@ -561363,25 +587596,25 @@
         // State 32
         0,
         // State 33
-        -195,
+        -198,
         // State 34
-        -217,
+        -220,
         // State 35
-        -250,
+        -254,
         // State 36
-        -193,
+        -196,
         // State 37
-        -194,
+        -197,
         // State 38
-        -215,
+        -218,
         // State 39
         -138,
         // State 40
-        -214,
+        -217,
         // State 41
-        -216,
+        -219,
         // State 42
-        -169,
+        -172,
         // State 43
         0,
         // State 44
@@ -561399,15 +587632,15 @@
         // State 50
         0,
         // State 51
-        -170,
+        -173,
         // State 52
         0,
         // State 53
-        -167,
+        -170,
         // State 54
         0,
         // State 55
-        -192,
+        -195,
         // State 56
         0,
         // State 57
@@ -561441,7 +587674,7 @@
         // State 71
         0,
         // State 72
-        -196,
+        -199,
         // State 73
         0,
         // State 74
@@ -561453,7 +587686,7 @@
         // State 77
         0,
         // State 78
-        -168,
+        -171,
         // State 79
         0,
         // State 80
@@ -561564,36 +587797,36 @@
                 _ => 1,
             },
             62 => 45,
-            72 => 34,
-            73 => match state {
+            74 => 34,
+            75 => match state {
                 3 => 51,
                 _ => 42,
             },
-            74 => 3,
-            81 => match state {
+            76 => 3,
+            83 => match state {
                 29 => 103,
                 _ => 46,
             },
-            82 => match state {
+            84 => match state {
                 26 => 91,
                 _ => 82,
             },
-            84 => match state {
+            86 => match state {
                 0 => 35,
                 _ => 47,
             },
-            85 => 36,
-            86 => match state {
+            87 => 36,
+            88 => match state {
                 27 => 94,
                 _ => 87,
             },
-            88 => match state {
+            90 => match state {
                 28 => 98,
                 _ => 88,
             },
-            90 => 28,
-            91 => 11,
-            92 => 37,
+            92 => 28,
+            93 => 11,
+            94 => 37,
             _ => 0,
         }
     }
@@ -562835,25 +589068,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -562865,14 +589098,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -562884,19 +589117,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -562908,109 +589141,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -563022,109 +589255,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -563136,43 +589369,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -563184,220 +589417,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
             248 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 123,
+                }
+            }
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            249 => __state_machine::SimulatedReduce::Accept,
             250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 126,
+                    nonterminal_produced: 125,
                 }
             }
             251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 127,
+                    nonterminal_produced: 126,
                 }
             }
             252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 128,
+                    nonterminal_produced: 127,
                 }
             }
-            253 => {
+            253 => __state_machine::SimulatedReduce::Accept,
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => {
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -564221,12 +590478,7 @@
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             249 => {
-                // __Term = Term => ActionFn(17);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action17::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             250 => {
                 __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -564238,7 +590490,12 @@
                 __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             253 => {
-                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Term = Term => ActionFn(17);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action17::<>(__sym0);
+                return Some(Ok(__nt));
             }
             254 => {
                 __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -564246,6 +590503,18 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -564339,6 +590608,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -564349,13 +590628,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -564439,6 +590718,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -564459,13 +590748,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -564609,66 +590898,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -564679,13 +590968,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -564699,43 +590988,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -564749,13 +591038,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -564789,13 +591078,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -564849,13 +591138,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -564896,10 +591185,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -564910,11 +591199,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -564925,11 +591214,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -564940,13 +591229,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -564957,11 +591246,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -564972,10 +591261,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -564986,11 +591275,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -565001,10 +591290,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -565015,11 +591304,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -565030,10 +591319,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -565044,13 +591333,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -565061,13 +591350,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -565078,10 +591367,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -565092,14 +591381,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -565110,14 +591399,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -565128,10 +591417,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -565142,13 +591431,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -565159,13 +591448,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -565176,10 +591465,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -565190,14 +591479,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -565208,14 +591497,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -565226,10 +591515,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -565240,13 +591529,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -565257,10 +591546,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -565271,11 +591560,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -565286,13 +591575,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -565303,14 +591592,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -565321,13 +591610,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -565338,10 +591627,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -565352,11 +591641,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -565367,13 +591656,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -565384,14 +591673,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -565402,13 +591691,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -565419,10 +591708,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -565433,11 +591722,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -565448,13 +591737,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -565465,14 +591754,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -565483,13 +591772,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -565500,10 +591789,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -565514,11 +591803,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -565529,13 +591818,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -565546,14 +591835,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -565564,13 +591853,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -565581,10 +591870,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -565595,11 +591884,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -565610,13 +591899,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -565627,14 +591916,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -565645,13 +591934,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -565662,10 +591951,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -565676,11 +591965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -565691,13 +591980,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -565708,14 +591997,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -565726,13 +592015,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -565743,10 +592032,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -565757,11 +592046,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -565772,13 +592061,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -565789,14 +592078,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -565807,10 +592096,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -565821,10 +592110,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -565835,14 +592124,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -565853,15 +592142,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -565872,14 +592161,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -565890,15 +592179,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -565909,11 +592198,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -565924,11 +592213,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -565939,11 +592228,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -565954,11 +592243,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -565969,11 +592258,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -565984,11 +592273,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -565999,11 +592288,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -566014,11 +592303,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -566029,11 +592318,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -566044,11 +592333,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -566059,11 +592348,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -566074,11 +592363,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -566089,11 +592378,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -566104,11 +592393,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -566119,11 +592408,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -566134,11 +592423,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -566149,14 +592438,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -566167,11 +592456,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -566182,10 +592471,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -566196,13 +592485,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -566213,11 +592502,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -566228,11 +592517,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -566243,10 +592532,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -566257,13 +592546,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -566274,11 +592563,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -566289,11 +592578,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -566304,10 +592593,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -566318,13 +592607,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -566335,11 +592624,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -566350,11 +592639,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -566365,10 +592654,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -566379,13 +592668,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -566396,11 +592685,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -566411,11 +592700,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -566426,10 +592715,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -566440,13 +592729,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -566457,11 +592746,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -566472,11 +592761,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -566487,10 +592776,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -566501,13 +592790,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -566518,11 +592807,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -566533,7 +592822,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -566544,7 +592833,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -566555,11 +592844,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -566570,10 +592859,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -566584,13 +592873,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -566601,11 +592890,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -566616,14 +592905,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -566634,11 +592923,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -566649,11 +592938,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -566664,14 +592953,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -566682,13 +592971,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -566699,13 +592988,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -566716,13 +593005,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -566733,11 +593022,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -566748,14 +593037,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -566766,11 +593055,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -566781,14 +593070,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -566799,11 +593088,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -566814,11 +593103,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -566829,10 +593118,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -566843,7 +593132,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -566851,7 +593140,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -566862,14 +593151,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -566880,11 +593169,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -566895,10 +593184,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -566909,7 +593198,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -566918,7 +593207,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -566929,7 +593218,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -566940,7 +593229,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -566951,7 +593240,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -566965,7 +593254,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -566976,7 +593265,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -566988,7 +593277,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -566999,7 +593288,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -567012,7 +593301,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -567023,7 +593312,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -567034,7 +593323,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -567045,7 +593334,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -567058,7 +593347,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -567069,7 +593358,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -567080,7 +593369,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -567091,7 +593380,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -567103,7 +593392,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -567114,7 +593403,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -567124,7 +593413,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -567135,11 +593424,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -567150,11 +593439,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -567165,10 +593454,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -567179,11 +593468,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -567194,7 +593483,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -567203,7 +593492,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -567214,7 +593503,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -567223,7 +593512,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -567234,14 +593523,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -567252,7 +593541,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -567262,7 +593551,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -567273,14 +593562,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -567291,7 +593580,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -567302,7 +593591,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -567313,7 +593602,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -567323,7 +593612,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -567334,9 +593623,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -567345,7 +593634,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -567356,9 +593645,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -567366,7 +593655,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -567377,11 +593666,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -567392,13 +593681,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -567409,11 +593698,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -567424,10 +593713,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -567438,11 +593727,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -567453,13 +593742,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -567470,11 +593759,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -567485,13 +593774,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -567502,7 +593791,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -567512,7 +593801,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -567523,7 +593812,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -567532,7 +593821,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -567543,11 +593832,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -567558,13 +593847,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -567573,13 +593864,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -567588,13 +593879,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -567603,15 +593894,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -567620,11 +593909,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -567635,15 +593924,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -567652,16 +593939,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -567670,11 +593956,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -567685,15 +593971,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -567702,13 +593988,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -567717,12 +594006,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -567731,13 +594021,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -567748,13 +594038,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -567763,13 +594053,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -567778,13 +594067,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -567793,13 +594084,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -567808,15 +594099,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -567825,15 +594114,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -567842,15 +594129,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -567859,15 +594144,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -567876,7 +594161,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -567888,62 +594224,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -567952,12 +594235,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -567966,17 +594255,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -567985,16 +594273,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -568003,16 +594288,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -568021,13 +594302,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -568036,12 +594321,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -568050,15 +594339,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -568068,13 +594357,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -568083,13 +594372,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -568098,13 +594386,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -568113,16 +594404,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -568131,13 +594419,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -568146,15 +594434,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -568163,17 +594449,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -568182,18 +594467,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -568202,13 +594482,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -568217,12 +594499,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -568231,13 +594518,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -568246,15 +594538,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -568263,15 +594553,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -568280,15 +594567,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -568297,12 +594582,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -568311,13 +594599,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -568326,13 +594616,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -568341,15 +594633,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -568358,12 +594647,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -568373,13 +594662,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -568388,13 +594677,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -568403,13 +594694,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -568418,13 +594709,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -568433,13 +594724,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -568448,13 +594739,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -568463,18 +594754,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568487,9 +594823,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568502,9 +594838,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568517,9 +594853,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568532,9 +594868,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568547,9 +594883,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568562,9 +594898,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568577,9 +594913,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568592,9 +594928,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568607,9 +594943,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568622,9 +594958,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568637,9 +594973,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568652,9 +594988,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568667,9 +595003,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568682,9 +595018,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568697,9 +595033,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568712,9 +595048,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568727,9 +595063,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568742,9 +595078,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568757,9 +595093,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568772,53 +595108,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -568826,13 +595117,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -568841,13 +595132,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -568856,13 +595147,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -568871,13 +595162,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -568886,15 +595177,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568907,9 +595258,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568917,14 +595268,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568937,9 +595288,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568952,9 +595303,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568967,9 +595318,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568977,14 +595328,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -568992,14 +595343,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -569007,14 +595358,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -569022,12 +595373,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Term::TermParser;
@@ -569097,32 +595448,34 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     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, 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, -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,
+        0, -169, -169, -169, -169, 5, -169, -169, -169, -169, -169, 0, 6, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 7, -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 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, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 6, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 7, -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 4
         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
@@ -569162,7 +595515,7 @@
         // 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,
+        0, -169, -169, -169, -169, 5, -169, -169, -169, -169, -169, 0, 6, 0, -169, 0, 57, 0, -169, -169, 0, -169, -169, -169, 7, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 24
         0, 0, 0, 92, 0, 0, 0, 93, 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
@@ -569180,27 +595533,27 @@
         // State 31
         0, 0, 0, 92, 0, 0, 0, 93, 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, -188, 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, -188, 0,
+        0, 0, 0, 60, 0, 0, 0, 0, 61, -191, 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, -191, 0,
         // State 33
         0, 0, 0, 92, 0, 0, 0, 93, 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, -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, -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 35
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 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, -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, -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, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 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, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 41
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 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
@@ -569208,7 +595561,7 @@
         // 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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 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
@@ -569218,19 +595571,19 @@
         // 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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 52
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 53
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 54
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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,
+        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 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, -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, -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 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
@@ -569274,7 +595627,7 @@
         // 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,
+        0, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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, 95, 0,
         // State 81
@@ -569288,23 +595641,23 @@
         // 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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 87
         0, 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,
         // State 88
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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,
         // State 89
         0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 91
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 102, 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, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
         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,
         // State 94
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 96
@@ -569314,29 +595667,29 @@
         // State 98
         0, 0, 0, -56, 0, 0, 0, -56, 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 99
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -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, -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 100
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 103
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 105
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 106
         0, 0, 0, -57, 0, 0, 0, -57, 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 107
         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 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 109
         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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -569345,11 +595698,11 @@
         // State 0
         0,
         // State 1
-        -166,
+        -169,
         // State 2
         0,
         // State 3
-        -165,
+        -168,
         // State 4
         0,
         // State 5
@@ -569411,23 +595764,23 @@
         // State 33
         0,
         // State 34
-        -195,
+        -198,
         // State 35
-        -217,
+        -220,
         // State 36
-        -251,
+        -255,
         // State 37
-        -194,
+        -197,
         // State 38
-        -215,
+        -218,
         // State 39
         -138,
         // State 40
-        -214,
+        -217,
         // State 41
-        -216,
+        -219,
         // State 42
-        -169,
+        -172,
         // State 43
         0,
         // State 44
@@ -569435,7 +595788,7 @@
         // State 45
         0,
         // State 46
-        -170,
+        -173,
         // State 47
         0,
         // State 48
@@ -569453,11 +595806,11 @@
         // State 54
         0,
         // State 55
-        -167,
+        -170,
         // State 56
         0,
         // State 57
-        -196,
+        -199,
         // State 58
         -124,
         // State 59
@@ -569501,7 +595854,7 @@
         // State 78
         0,
         // State 79
-        -168,
+        -171,
         // State 80
         0,
         // State 81
@@ -569615,36 +595968,36 @@
                 _ => 1,
             },
             62 => 44,
-            72 => 35,
-            73 => match state {
+            74 => 35,
+            75 => match state {
                 3 => 46,
                 _ => 42,
             },
-            74 => 3,
-            81 => match state {
+            76 => 3,
+            83 => match state {
                 30 => 105,
                 _ => 45,
             },
-            82 => match state {
+            84 => match state {
                 25 => 93,
                 _ => 82,
             },
-            84 => 50,
-            85 => match state {
+            86 => 50,
+            87 => match state {
                 0 => 36,
                 _ => 51,
             },
-            86 => match state {
+            88 => match state {
                 28 => 96,
                 _ => 89,
             },
-            88 => match state {
+            90 => match state {
                 29 => 100,
                 _ => 90,
             },
-            90 => 29,
-            91 => 11,
-            92 => 37,
+            92 => 29,
+            93 => 11,
+            94 => 37,
             _ => 0,
         }
     }
@@ -570886,25 +597239,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -570916,14 +597269,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -570935,19 +597288,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -570959,109 +597312,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -571073,109 +597426,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -571187,43 +597540,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -571235,220 +597588,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
             249 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 124,
+                }
+            }
+            250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            250 => __state_machine::SimulatedReduce::Accept,
             251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 127,
+                    nonterminal_produced: 126,
                 }
             }
             252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 128,
+                    nonterminal_produced: 127,
                 }
             }
             253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 129,
+                    nonterminal_produced: 128,
                 }
             }
-            254 => {
+            254 => __state_machine::SimulatedReduce::Accept,
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => {
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -572275,12 +598652,7 @@
                 __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             250 => {
-                // __Term0 = Term0 => ActionFn(16);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action16::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             251 => {
                 __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -572292,11 +598664,28 @@
                 __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             254 => {
-                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Term0 = Term0 => ActionFn(16);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action16::<>(__sym0);
+                return Some(Ok(__nt));
             }
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -572390,6 +598779,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -572400,13 +598799,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -572490,6 +598889,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -572510,13 +598919,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -572660,66 +599069,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -572730,13 +599139,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -572750,43 +599159,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -572800,13 +599209,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -572840,13 +599249,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -572900,13 +599309,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -572947,10 +599356,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -572961,11 +599370,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -572976,11 +599385,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -572991,13 +599400,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -573008,11 +599417,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -573023,10 +599432,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -573037,11 +599446,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -573052,10 +599461,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -573066,11 +599475,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -573081,10 +599490,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -573095,13 +599504,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -573112,13 +599521,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -573129,10 +599538,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -573143,14 +599552,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -573161,14 +599570,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -573179,10 +599588,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -573193,13 +599602,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -573210,13 +599619,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -573227,10 +599636,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -573241,14 +599650,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -573259,14 +599668,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -573277,10 +599686,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -573291,13 +599700,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -573308,10 +599717,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -573322,11 +599731,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -573337,13 +599746,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -573354,14 +599763,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -573372,13 +599781,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -573389,10 +599798,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -573403,11 +599812,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -573418,13 +599827,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -573435,14 +599844,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -573453,13 +599862,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -573470,10 +599879,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -573484,11 +599893,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -573499,13 +599908,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -573516,14 +599925,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -573534,13 +599943,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -573551,10 +599960,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -573565,11 +599974,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -573580,13 +599989,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -573597,14 +600006,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -573615,13 +600024,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -573632,10 +600041,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -573646,11 +600055,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -573661,13 +600070,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -573678,14 +600087,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -573696,13 +600105,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -573713,10 +600122,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -573727,11 +600136,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -573742,13 +600151,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -573759,14 +600168,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -573777,13 +600186,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -573794,10 +600203,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -573808,11 +600217,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -573823,13 +600232,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -573840,14 +600249,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -573858,10 +600267,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -573872,10 +600281,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -573886,14 +600295,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -573904,15 +600313,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -573923,14 +600332,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -573941,15 +600350,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -573960,11 +600369,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -573975,11 +600384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -573990,11 +600399,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -574005,11 +600414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -574020,11 +600429,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -574035,11 +600444,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -574050,11 +600459,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -574065,11 +600474,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -574080,11 +600489,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -574095,11 +600504,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -574110,11 +600519,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -574125,11 +600534,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -574140,11 +600549,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -574155,11 +600564,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -574170,11 +600579,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -574185,11 +600594,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -574200,14 +600609,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -574218,11 +600627,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -574233,10 +600642,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -574247,13 +600656,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -574264,11 +600673,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -574279,11 +600688,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -574294,10 +600703,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -574308,13 +600717,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -574325,11 +600734,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -574340,11 +600749,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -574355,10 +600764,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -574369,13 +600778,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -574386,11 +600795,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -574401,11 +600810,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -574416,10 +600825,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -574430,13 +600839,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -574447,11 +600856,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -574462,11 +600871,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -574477,10 +600886,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -574491,13 +600900,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -574508,11 +600917,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -574523,11 +600932,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -574538,10 +600947,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -574552,13 +600961,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -574569,11 +600978,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -574584,7 +600993,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -574595,7 +601004,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -574606,11 +601015,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -574621,10 +601030,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -574635,13 +601044,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -574652,11 +601061,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -574667,14 +601076,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -574685,11 +601094,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -574700,11 +601109,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -574715,14 +601124,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -574733,13 +601142,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -574750,13 +601159,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -574767,13 +601176,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -574784,11 +601193,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -574799,14 +601208,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -574817,11 +601226,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -574832,14 +601241,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -574850,11 +601259,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -574865,11 +601274,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -574880,10 +601289,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -574894,7 +601303,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -574902,7 +601311,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -574913,14 +601322,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -574931,11 +601340,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -574946,10 +601355,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -574960,7 +601369,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -574969,7 +601378,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -574980,7 +601389,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -574991,7 +601400,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -575002,7 +601411,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -575016,7 +601425,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -575027,7 +601436,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -575039,7 +601448,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -575050,7 +601459,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -575063,7 +601472,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -575074,7 +601483,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -575085,7 +601494,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -575096,7 +601505,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -575109,7 +601518,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -575120,7 +601529,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -575131,7 +601540,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -575142,7 +601551,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -575154,7 +601563,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -575165,7 +601574,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -575175,7 +601584,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -575186,11 +601595,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -575201,11 +601610,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -575216,10 +601625,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -575230,11 +601639,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -575245,7 +601654,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -575254,7 +601663,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -575265,7 +601674,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -575274,7 +601683,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -575285,14 +601694,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -575303,7 +601712,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -575313,7 +601722,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -575324,14 +601733,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -575342,7 +601751,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -575353,7 +601762,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -575364,7 +601773,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -575374,7 +601783,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -575385,9 +601794,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -575396,7 +601805,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -575407,9 +601816,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -575417,7 +601826,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -575428,11 +601837,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -575443,13 +601852,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -575460,11 +601869,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -575475,10 +601884,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -575489,11 +601898,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -575504,13 +601913,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -575521,11 +601930,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -575536,13 +601945,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -575553,7 +601962,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -575563,7 +601972,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -575574,7 +601983,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -575583,7 +601992,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -575594,11 +602003,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -575609,13 +602018,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -575624,13 +602035,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -575639,13 +602050,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -575654,15 +602065,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -575671,11 +602080,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -575686,15 +602095,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -575703,16 +602110,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -575721,11 +602127,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -575736,15 +602142,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -575753,13 +602159,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -575768,12 +602177,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -575782,13 +602192,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -575799,13 +602209,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -575814,13 +602224,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -575829,13 +602238,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -575844,13 +602255,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -575859,15 +602270,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -575876,15 +602285,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -575893,15 +602300,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -575910,15 +602315,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -575927,7 +602332,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -575939,62 +602395,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -576003,12 +602406,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -576017,17 +602426,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -576036,16 +602444,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -576054,16 +602459,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -576072,13 +602473,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -576087,12 +602492,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -576101,15 +602510,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -576119,13 +602528,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -576134,13 +602543,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -576149,13 +602557,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -576164,16 +602575,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -576182,13 +602590,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -576197,15 +602605,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -576214,17 +602620,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -576233,18 +602638,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -576253,13 +602653,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -576268,12 +602670,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -576282,13 +602689,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -576297,15 +602709,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -576314,15 +602724,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -576331,15 +602738,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -576348,12 +602753,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -576362,13 +602770,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -576377,13 +602787,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -576392,15 +602804,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -576409,12 +602818,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -576424,13 +602833,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -576439,13 +602848,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -576454,13 +602865,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -576469,13 +602880,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -576484,13 +602895,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -576499,13 +602910,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -576514,18 +602925,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576538,9 +602994,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576553,9 +603009,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576568,9 +603024,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576583,9 +603039,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576598,9 +603054,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576613,9 +603069,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576628,9 +603084,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576643,9 +603099,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576658,9 +603114,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576673,9 +603129,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576688,9 +603144,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576703,9 +603159,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576718,9 +603174,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576733,9 +603189,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576748,9 +603204,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576763,9 +603219,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576778,9 +603234,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576793,9 +603249,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576808,9 +603264,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576823,53 +603279,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -576877,13 +603288,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -576892,13 +603303,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -576907,13 +603318,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -576922,13 +603333,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -576937,15 +603348,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576958,9 +603429,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576968,14 +603439,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -576988,9 +603459,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -577003,9 +603474,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -577018,9 +603489,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -577028,14 +603499,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -577043,14 +603514,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -577058,14 +603529,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -577073,12 +603544,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Term0::Term0Parser;
@@ -577148,22 +603619,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -577177,27 +603650,27 @@
         // State 4
         0, 0, 0, 9, 0, 0, 0, 10, 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, 11, 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, -197, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, -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, -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,
         // 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, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 8
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 14, 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, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 10
         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 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -198, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, -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, -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 12
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 13
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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,
         // State 17
@@ -577205,7 +603678,7 @@
         // State 18
         0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 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 19
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 20
         0, 0, 0, -56, 0, 0, 0, -56, 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 21
@@ -577213,7 +603686,7 @@
         // State 22
         0, 0, 0, -57, 0, 0, 0, -57, 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 23
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -577230,9 +603703,9 @@
         // State 4
         0,
         // State 5
-        -197,
+        -200,
         // State 6
-        -252,
+        -256,
         // State 7
         0,
         // State 8
@@ -577242,7 +603715,7 @@
         // State 10
         -138,
         // State 11
-        -198,
+        -201,
         // State 12
         0,
         // State 13
@@ -577258,7 +603731,7 @@
         // State 18
         0,
         // State 19
-        -199,
+        -202,
         // State 20
         0,
         // State 21
@@ -577266,7 +603739,7 @@
         // State 22
         0,
         // State 23
-        -200,
+        -203,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
@@ -577279,16 +603752,16 @@
                 1 => 11,
                 _ => 5,
             },
-            86 => match state {
+            88 => match state {
                 0 => 6,
                 3 => 18,
                 _ => 17,
             },
-            88 => match state {
+            90 => match state {
                 1 => 12,
                 _ => 7,
             },
-            90 => 1,
+            92 => 1,
             _ => 0,
         }
     }
@@ -578530,25 +605003,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -578560,14 +605033,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -578579,19 +605052,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -578603,109 +605076,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -578717,109 +605190,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -578831,43 +605304,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -578879,220 +605352,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
             249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 124,
                 }
             }
             250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 125,
+                }
+            }
+            251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            251 => __state_machine::SimulatedReduce::Accept,
             252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 128,
+                    nonterminal_produced: 127,
                 }
             }
             253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 129,
+                    nonterminal_produced: 128,
                 }
             }
             254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 130,
+                    nonterminal_produced: 129,
                 }
             }
-            255 => {
+            255 => __state_machine::SimulatedReduce::Accept,
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -579922,12 +606419,7 @@
                 __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             251 => {
-                // __Type = Type => ActionFn(2);
-                let __sym0 = __pop_Variant6(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action2::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             252 => {
                 __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -579939,7 +606431,24 @@
                 __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Type = Type => ActionFn(2);
+                let __sym0 = __pop_Variant6(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action2::<>(__sym0);
+                return Some(Ok(__nt));
+            }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -580034,6 +606543,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -580044,13 +606563,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -580134,6 +606653,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -580154,13 +606683,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -580304,66 +606833,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -580374,13 +606903,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -580394,43 +606923,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -580444,13 +606973,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -580484,13 +607013,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -580544,13 +607073,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -580591,10 +607120,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -580605,11 +607134,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -580620,11 +607149,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -580635,13 +607164,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -580652,11 +607181,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -580667,10 +607196,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -580681,11 +607210,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -580696,10 +607225,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -580710,11 +607239,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -580725,10 +607254,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -580739,13 +607268,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -580756,13 +607285,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -580773,10 +607302,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -580787,14 +607316,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -580805,14 +607334,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -580823,10 +607352,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -580837,13 +607366,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -580854,13 +607383,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -580871,10 +607400,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -580885,14 +607414,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -580903,14 +607432,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -580921,10 +607450,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -580935,13 +607464,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -580952,10 +607481,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -580966,11 +607495,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -580981,13 +607510,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -580998,14 +607527,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -581016,13 +607545,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -581033,10 +607562,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -581047,11 +607576,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -581062,13 +607591,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -581079,14 +607608,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -581097,13 +607626,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -581114,10 +607643,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -581128,11 +607657,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -581143,13 +607672,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -581160,14 +607689,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -581178,13 +607707,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -581195,10 +607724,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -581209,11 +607738,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -581224,13 +607753,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -581241,14 +607770,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -581259,13 +607788,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -581276,10 +607805,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -581290,11 +607819,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -581305,13 +607834,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -581322,14 +607851,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -581340,13 +607869,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -581357,10 +607886,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -581371,11 +607900,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -581386,13 +607915,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -581403,14 +607932,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -581421,13 +607950,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -581438,10 +607967,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -581452,11 +607981,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -581467,13 +607996,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -581484,14 +608013,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -581502,10 +608031,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -581516,10 +608045,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -581530,14 +608059,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -581548,15 +608077,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -581567,14 +608096,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -581585,15 +608114,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -581604,11 +608133,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -581619,11 +608148,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -581634,11 +608163,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -581649,11 +608178,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -581664,11 +608193,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -581679,11 +608208,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -581694,11 +608223,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -581709,11 +608238,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -581724,11 +608253,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -581739,11 +608268,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -581754,11 +608283,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -581769,11 +608298,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -581784,11 +608313,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -581799,11 +608328,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -581814,11 +608343,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -581829,11 +608358,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -581844,14 +608373,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -581862,11 +608391,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -581877,10 +608406,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -581891,13 +608420,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -581908,11 +608437,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -581923,11 +608452,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -581938,10 +608467,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -581952,13 +608481,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -581969,11 +608498,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -581984,11 +608513,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -581999,10 +608528,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -582013,13 +608542,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -582030,11 +608559,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -582045,11 +608574,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -582060,10 +608589,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -582074,13 +608603,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -582091,11 +608620,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -582106,11 +608635,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -582121,10 +608650,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -582135,13 +608664,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -582152,11 +608681,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -582167,11 +608696,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -582182,10 +608711,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -582196,13 +608725,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -582213,11 +608742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -582228,7 +608757,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -582239,7 +608768,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -582250,11 +608779,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -582265,10 +608794,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -582279,13 +608808,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -582296,11 +608825,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -582311,14 +608840,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -582329,11 +608858,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -582344,11 +608873,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -582359,14 +608888,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -582377,13 +608906,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -582394,13 +608923,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -582411,13 +608940,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -582428,11 +608957,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -582443,14 +608972,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -582461,11 +608990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -582476,14 +609005,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -582494,11 +609023,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -582509,11 +609038,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -582524,10 +609053,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -582538,7 +609067,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -582546,7 +609075,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -582557,14 +609086,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -582575,11 +609104,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -582590,10 +609119,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -582604,7 +609133,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -582613,7 +609142,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -582624,7 +609153,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -582635,7 +609164,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -582646,7 +609175,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -582660,7 +609189,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -582671,7 +609200,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -582683,7 +609212,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -582694,7 +609223,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -582707,7 +609236,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -582718,7 +609247,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -582729,7 +609258,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -582740,7 +609269,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -582753,7 +609282,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -582764,7 +609293,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -582775,7 +609304,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -582786,7 +609315,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -582798,7 +609327,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -582809,7 +609338,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -582819,7 +609348,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -582830,11 +609359,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -582845,11 +609374,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -582860,10 +609389,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -582874,11 +609403,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -582889,7 +609418,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -582898,7 +609427,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -582909,7 +609438,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -582918,7 +609447,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -582929,14 +609458,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -582947,7 +609476,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -582957,7 +609486,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -582968,14 +609497,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -582986,7 +609515,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -582997,7 +609526,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -583008,7 +609537,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -583018,7 +609547,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -583029,9 +609558,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -583040,7 +609569,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -583051,9 +609580,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -583061,7 +609590,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -583072,11 +609601,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -583087,13 +609616,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -583104,11 +609633,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -583119,10 +609648,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -583133,11 +609662,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -583148,13 +609677,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -583165,11 +609694,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -583180,13 +609709,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -583197,7 +609726,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -583207,7 +609736,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -583218,7 +609747,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -583227,7 +609756,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -583238,11 +609767,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -583253,13 +609782,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -583268,13 +609799,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -583283,13 +609814,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -583298,15 +609829,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -583315,11 +609844,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -583330,15 +609859,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -583347,16 +609874,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -583365,11 +609891,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -583380,15 +609906,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -583397,13 +609923,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -583412,12 +609941,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -583426,13 +609956,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -583443,13 +609973,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -583458,13 +609988,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -583473,13 +610002,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -583488,13 +610019,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -583503,15 +610034,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -583520,15 +610049,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -583537,15 +610064,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -583554,15 +610079,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -583571,7 +610096,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -583583,62 +610159,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -583647,12 +610170,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -583661,17 +610190,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -583680,16 +610208,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -583698,16 +610223,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -583716,13 +610237,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -583731,12 +610256,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -583745,15 +610274,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -583763,13 +610292,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -583778,13 +610307,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -583793,13 +610321,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -583808,16 +610339,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -583826,13 +610354,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -583841,15 +610369,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -583858,17 +610384,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -583877,18 +610402,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -583897,13 +610417,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -583912,12 +610434,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -583926,13 +610453,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -583941,15 +610473,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -583958,15 +610488,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -583975,15 +610502,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -583992,12 +610517,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -584006,13 +610534,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -584021,13 +610551,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -584036,15 +610568,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -584053,12 +610582,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -584068,13 +610597,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -584083,13 +610612,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -584098,13 +610629,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -584113,13 +610644,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -584128,13 +610659,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -584143,13 +610674,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -584158,18 +610689,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584182,9 +610758,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584197,9 +610773,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584212,9 +610788,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584227,9 +610803,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584242,9 +610818,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584257,9 +610833,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584272,9 +610848,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584287,9 +610863,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584302,9 +610878,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584317,9 +610893,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584332,9 +610908,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584347,9 +610923,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584362,9 +610938,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584377,9 +610953,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584392,9 +610968,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584407,9 +610983,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584422,9 +610998,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584437,9 +611013,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584452,9 +611028,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584467,53 +611043,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -584521,13 +611052,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -584536,13 +611067,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -584551,13 +611082,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -584566,13 +611097,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -584581,15 +611112,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584602,9 +611193,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584612,14 +611203,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584632,9 +611223,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584647,9 +611238,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584662,9 +611253,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584672,14 +611263,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584687,14 +611278,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584702,14 +611293,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -584717,12 +611308,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__Type::TypeParser;
@@ -584792,22 +611383,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -584832,21 +611425,21 @@
         // State 0
         0,
         // State 1
-        -253,
+        -257,
         // State 2
-        -203,
+        -206,
         // State 3
         0,
         // State 4
-        -204,
+        -207,
         // State 5
-        -205,
+        -208,
         // State 6
-        -206,
+        -209,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            88 => 1,
+            90 => 1,
             _ => 0,
         }
     }
@@ -586088,25 +612681,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -586118,14 +612711,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -586137,19 +612730,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -586161,109 +612754,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -586275,109 +612868,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -586389,43 +612982,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -586437,218 +613030,242 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
             249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 124,
                 }
             }
             250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 126,
+                    nonterminal_produced: 125,
                 }
             }
             251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 126,
+                }
+            }
+            252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            252 => __state_machine::SimulatedReduce::Accept,
             253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 129,
+                    nonterminal_produced: 128,
                 }
             }
             254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 130,
+                    nonterminal_produced: 129,
                 }
             }
             255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 131,
+                    nonterminal_produced: 130,
+                }
+            }
+            256 => __state_machine::SimulatedReduce::Accept,
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
                 }
             }
             _ => panic!("invalid reduction index {}", __reduce_index)
@@ -587483,12 +614100,7 @@
                 __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             252 => {
-                // __TypeQualifier = TypeQualifier => ActionFn(1);
-                let __sym0 = __pop_Variant58(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action1::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             253 => {
                 __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -587499,6 +614111,23 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                // __TypeQualifier = TypeQualifier => ActionFn(1);
+                let __sym0 = __pop_Variant60(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action1::<>(__sym0);
+                return Some(Ok(__nt));
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -587592,6 +614221,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -587602,13 +614241,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -587692,6 +614331,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -587712,13 +614361,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -587862,66 +614511,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -587932,13 +614581,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -587952,43 +614601,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -588002,13 +614651,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -588042,13 +614691,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -588102,13 +614751,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -588149,10 +614798,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -588163,11 +614812,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -588178,11 +614827,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -588193,13 +614842,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -588210,11 +614859,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -588225,10 +614874,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -588239,11 +614888,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -588254,10 +614903,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -588268,11 +614917,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -588283,10 +614932,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -588297,13 +614946,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -588314,13 +614963,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -588331,10 +614980,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -588345,14 +614994,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -588363,14 +615012,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -588381,10 +615030,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -588395,13 +615044,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -588412,13 +615061,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -588429,10 +615078,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -588443,14 +615092,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -588461,14 +615110,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -588479,10 +615128,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -588493,13 +615142,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -588510,10 +615159,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -588524,11 +615173,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -588539,13 +615188,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -588556,14 +615205,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -588574,13 +615223,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -588591,10 +615240,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -588605,11 +615254,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -588620,13 +615269,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -588637,14 +615286,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -588655,13 +615304,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -588672,10 +615321,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -588686,11 +615335,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -588701,13 +615350,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -588718,14 +615367,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -588736,13 +615385,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -588753,10 +615402,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -588767,11 +615416,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -588782,13 +615431,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -588799,14 +615448,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -588817,13 +615466,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -588834,10 +615483,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -588848,11 +615497,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -588863,13 +615512,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -588880,14 +615529,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -588898,13 +615547,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -588915,10 +615564,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -588929,11 +615578,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -588944,13 +615593,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -588961,14 +615610,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -588979,13 +615628,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -588996,10 +615645,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -589010,11 +615659,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -589025,13 +615674,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -589042,14 +615691,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -589060,10 +615709,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -589074,10 +615723,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -589088,14 +615737,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -589106,15 +615755,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -589125,14 +615774,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -589143,15 +615792,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -589162,11 +615811,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -589177,11 +615826,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -589192,11 +615841,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -589207,11 +615856,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -589222,11 +615871,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -589237,11 +615886,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -589252,11 +615901,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -589267,11 +615916,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -589282,11 +615931,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -589297,11 +615946,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -589312,11 +615961,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -589327,11 +615976,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -589342,11 +615991,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -589357,11 +616006,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -589372,11 +616021,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -589387,11 +616036,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -589402,14 +616051,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -589420,11 +616069,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -589435,10 +616084,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -589449,13 +616098,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -589466,11 +616115,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -589481,11 +616130,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -589496,10 +616145,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -589510,13 +616159,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -589527,11 +616176,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -589542,11 +616191,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -589557,10 +616206,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -589571,13 +616220,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -589588,11 +616237,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -589603,11 +616252,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -589618,10 +616267,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -589632,13 +616281,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -589649,11 +616298,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -589664,11 +616313,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -589679,10 +616328,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -589693,13 +616342,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -589710,11 +616359,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -589725,11 +616374,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -589740,10 +616389,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -589754,13 +616403,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -589771,11 +616420,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -589786,7 +616435,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -589797,7 +616446,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -589808,11 +616457,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -589823,10 +616472,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -589837,13 +616486,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -589854,11 +616503,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -589869,14 +616518,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -589887,11 +616536,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -589902,11 +616551,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -589917,14 +616566,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -589935,13 +616584,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -589952,13 +616601,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -589969,13 +616618,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -589986,11 +616635,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -590001,14 +616650,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -590019,11 +616668,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -590034,14 +616683,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -590052,11 +616701,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -590067,11 +616716,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -590082,10 +616731,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -590096,7 +616745,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -590104,7 +616753,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -590115,14 +616764,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -590133,11 +616782,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -590148,10 +616797,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -590162,7 +616811,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -590171,7 +616820,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -590182,7 +616831,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -590193,7 +616842,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -590204,7 +616853,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -590218,7 +616867,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -590229,7 +616878,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -590241,7 +616890,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -590252,7 +616901,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -590265,7 +616914,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -590276,7 +616925,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -590287,7 +616936,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -590298,7 +616947,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -590311,7 +616960,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -590322,7 +616971,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -590333,7 +616982,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -590344,7 +616993,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -590356,7 +617005,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -590367,7 +617016,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -590377,7 +617026,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -590388,11 +617037,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -590403,11 +617052,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -590418,10 +617067,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -590432,11 +617081,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -590447,7 +617096,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -590456,7 +617105,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -590467,7 +617116,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -590476,7 +617125,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -590487,14 +617136,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -590505,7 +617154,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -590515,7 +617164,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -590526,14 +617175,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -590544,7 +617193,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -590555,7 +617204,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -590566,7 +617215,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -590576,7 +617225,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -590587,9 +617236,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -590598,7 +617247,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -590609,9 +617258,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -590619,7 +617268,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -590630,11 +617279,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -590645,13 +617294,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -590662,11 +617311,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -590677,10 +617326,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -590691,11 +617340,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -590706,13 +617355,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -590723,11 +617372,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -590738,13 +617387,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -590755,7 +617404,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -590765,7 +617414,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -590776,7 +617425,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -590785,7 +617434,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -590796,11 +617445,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -590811,13 +617460,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -590826,13 +617477,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -590841,13 +617492,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -590856,15 +617507,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -590873,11 +617522,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -590888,15 +617537,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -590905,16 +617552,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -590923,11 +617569,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -590938,15 +617584,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -590955,13 +617601,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -590970,12 +617619,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -590984,13 +617634,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -591001,13 +617651,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -591016,13 +617666,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -591031,13 +617680,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -591046,13 +617697,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -591061,15 +617712,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -591078,15 +617727,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -591095,15 +617742,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -591112,15 +617757,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -591129,7 +617774,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -591141,62 +617837,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -591205,12 +617848,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -591219,17 +617868,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -591238,16 +617886,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -591256,16 +617901,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -591274,13 +617915,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -591289,12 +617934,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -591303,15 +617952,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -591321,13 +617970,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -591336,13 +617985,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -591351,13 +617999,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -591366,16 +618017,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -591384,13 +618032,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -591399,15 +618047,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -591416,17 +618062,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -591435,18 +618080,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -591455,13 +618095,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -591470,12 +618112,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -591484,13 +618131,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -591499,15 +618151,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -591516,15 +618166,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -591533,15 +618180,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -591550,12 +618195,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -591564,13 +618212,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -591579,13 +618229,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -591594,15 +618246,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -591611,12 +618260,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -591626,13 +618275,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -591641,13 +618290,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -591656,13 +618307,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -591671,13 +618322,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -591686,13 +618337,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -591701,13 +618352,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -591716,18 +618367,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591740,9 +618436,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591755,9 +618451,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591770,9 +618466,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591785,9 +618481,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591800,9 +618496,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591815,9 +618511,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591830,9 +618526,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591845,9 +618541,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591860,9 +618556,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591875,9 +618571,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591890,9 +618586,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591905,9 +618601,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591920,9 +618616,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591935,9 +618631,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591950,9 +618646,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591965,9 +618661,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591980,9 +618676,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -591995,9 +618691,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592010,9 +618706,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592025,53 +618721,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -592079,13 +618730,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -592094,13 +618745,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -592109,13 +618760,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -592124,13 +618775,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -592139,15 +618790,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592160,9 +618871,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592170,14 +618881,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592190,9 +618901,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592205,9 +618916,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592220,9 +618931,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592235,9 +618946,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592245,14 +618956,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592260,14 +618971,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -592275,12 +618986,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__TypeQualifier::TypeQualifierParser;
@@ -592350,22 +619061,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -592386,17 +619099,17 @@
         // State 0
         0,
         // State 1
-        -254,
+        -258,
         // State 2
-        -212,
+        -215,
         // State 3
-        -211,
+        -214,
         // State 4
-        -213,
+        -216,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            91 => 1,
+            93 => 1,
             _ => 0,
         }
     }
@@ -593638,25 +620351,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -593668,14 +620381,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -593687,19 +620400,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -593711,109 +620424,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -593825,109 +620538,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -593939,43 +620652,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -593987,220 +620700,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
             249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 124,
                 }
             }
             250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 126,
+                    nonterminal_produced: 125,
                 }
             }
             251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 127,
+                    nonterminal_produced: 126,
                 }
             }
             252 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 127,
+                }
+            }
+            253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
-            253 => __state_machine::SimulatedReduce::Accept,
             254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 130,
+                    nonterminal_produced: 129,
                 }
             }
             255 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => __state_machine::SimulatedReduce::Accept,
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -595036,12 +621773,7 @@
                 __reduce252(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             253 => {
-                // __UnaryOp = UnaryOp => ActionFn(26);
-                let __sym0 = __pop_Variant60(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action26::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             254 => {
                 __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -595049,6 +621781,23 @@
             255 => {
                 __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                // __UnaryOp = UnaryOp => ActionFn(26);
+                let __sym0 = __pop_Variant62(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action26::<>(__sym0);
+                return Some(Ok(__nt));
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -595142,6 +621891,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -595152,13 +621911,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -595242,6 +622001,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -595262,13 +622031,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -595412,66 +622181,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -595482,13 +622251,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -595502,43 +622271,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -595552,13 +622321,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -595592,13 +622361,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -595652,13 +622421,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -595699,10 +622468,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -595713,11 +622482,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -595728,11 +622497,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -595743,13 +622512,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -595760,11 +622529,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -595775,10 +622544,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -595789,11 +622558,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -595804,10 +622573,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -595818,11 +622587,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -595833,10 +622602,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -595847,13 +622616,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -595864,13 +622633,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -595881,10 +622650,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -595895,14 +622664,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -595913,14 +622682,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -595931,10 +622700,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -595945,13 +622714,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -595962,13 +622731,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -595979,10 +622748,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -595993,14 +622762,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -596011,14 +622780,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -596029,10 +622798,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -596043,13 +622812,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -596060,10 +622829,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -596074,11 +622843,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -596089,13 +622858,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -596106,14 +622875,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -596124,13 +622893,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -596141,10 +622910,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -596155,11 +622924,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -596170,13 +622939,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -596187,14 +622956,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -596205,13 +622974,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -596222,10 +622991,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -596236,11 +623005,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -596251,13 +623020,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -596268,14 +623037,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -596286,13 +623055,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -596303,10 +623072,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -596317,11 +623086,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -596332,13 +623101,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -596349,14 +623118,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -596367,13 +623136,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -596384,10 +623153,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -596398,11 +623167,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -596413,13 +623182,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -596430,14 +623199,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -596448,13 +623217,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -596465,10 +623234,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -596479,11 +623248,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -596494,13 +623263,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -596511,14 +623280,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -596529,13 +623298,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -596546,10 +623315,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -596560,11 +623329,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -596575,13 +623344,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -596592,14 +623361,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -596610,10 +623379,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -596624,10 +623393,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -596638,14 +623407,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -596656,15 +623425,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -596675,14 +623444,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -596693,15 +623462,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -596712,11 +623481,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -596727,11 +623496,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -596742,11 +623511,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -596757,11 +623526,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -596772,11 +623541,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -596787,11 +623556,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -596802,11 +623571,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -596817,11 +623586,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -596832,11 +623601,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -596847,11 +623616,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -596862,11 +623631,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -596877,11 +623646,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -596892,11 +623661,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -596907,11 +623676,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -596922,11 +623691,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -596937,11 +623706,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -596952,14 +623721,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -596970,11 +623739,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -596985,10 +623754,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -596999,13 +623768,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -597016,11 +623785,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -597031,11 +623800,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -597046,10 +623815,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -597060,13 +623829,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -597077,11 +623846,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -597092,11 +623861,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -597107,10 +623876,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -597121,13 +623890,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -597138,11 +623907,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -597153,11 +623922,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -597168,10 +623937,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -597182,13 +623951,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -597199,11 +623968,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -597214,11 +623983,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -597229,10 +623998,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -597243,13 +624012,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -597260,11 +624029,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -597275,11 +624044,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -597290,10 +624059,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -597304,13 +624073,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -597321,11 +624090,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -597336,7 +624105,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -597347,7 +624116,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -597358,11 +624127,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -597373,10 +624142,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -597387,13 +624156,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -597404,11 +624173,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -597419,14 +624188,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -597437,11 +624206,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -597452,11 +624221,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -597467,14 +624236,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -597485,13 +624254,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -597502,13 +624271,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -597519,13 +624288,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -597536,11 +624305,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -597551,14 +624320,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -597569,11 +624338,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -597584,14 +624353,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -597602,11 +624371,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -597617,11 +624386,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -597632,10 +624401,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -597646,7 +624415,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -597654,7 +624423,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -597665,14 +624434,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -597683,11 +624452,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -597698,10 +624467,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -597712,7 +624481,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -597721,7 +624490,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -597732,7 +624501,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -597743,7 +624512,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -597754,7 +624523,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -597768,7 +624537,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -597779,7 +624548,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -597791,7 +624560,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -597802,7 +624571,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -597815,7 +624584,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -597826,7 +624595,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -597837,7 +624606,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -597848,7 +624617,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -597861,7 +624630,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -597872,7 +624641,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -597883,7 +624652,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -597894,7 +624663,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -597906,7 +624675,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -597917,7 +624686,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -597927,7 +624696,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -597938,11 +624707,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -597953,11 +624722,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -597968,10 +624737,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -597982,11 +624751,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -597997,7 +624766,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -598006,7 +624775,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -598017,7 +624786,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -598026,7 +624795,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -598037,14 +624806,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -598055,7 +624824,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -598065,7 +624834,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -598076,14 +624845,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -598094,7 +624863,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -598105,7 +624874,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -598116,7 +624885,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -598126,7 +624895,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -598137,9 +624906,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -598148,7 +624917,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -598159,9 +624928,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -598169,7 +624938,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -598180,11 +624949,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -598195,13 +624964,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -598212,11 +624981,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -598227,10 +624996,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -598241,11 +625010,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -598256,13 +625025,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -598273,11 +625042,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -598288,13 +625057,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -598305,7 +625074,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -598315,7 +625084,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -598326,7 +625095,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -598335,7 +625104,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -598346,11 +625115,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -598361,13 +625130,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -598376,13 +625147,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -598391,13 +625162,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -598406,15 +625177,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -598423,11 +625192,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -598438,15 +625207,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -598455,16 +625222,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -598473,11 +625239,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -598488,15 +625254,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -598505,13 +625271,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -598520,12 +625289,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -598534,13 +625304,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -598551,13 +625321,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -598566,13 +625336,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -598581,13 +625350,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -598596,13 +625367,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -598611,15 +625382,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -598628,15 +625397,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -598645,15 +625412,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -598662,15 +625427,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -598679,7 +625444,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -598691,62 +625507,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -598755,12 +625518,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -598769,17 +625538,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -598788,16 +625556,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -598806,16 +625571,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -598824,13 +625585,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -598839,12 +625604,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -598853,15 +625622,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -598871,13 +625640,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -598886,13 +625655,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -598901,13 +625669,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -598916,16 +625687,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -598934,13 +625702,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -598949,15 +625717,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -598966,17 +625732,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -598985,18 +625750,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -599005,13 +625765,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -599020,12 +625782,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -599034,13 +625801,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -599049,15 +625821,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -599066,15 +625836,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -599083,15 +625850,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -599100,12 +625865,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -599114,13 +625882,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -599129,13 +625899,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -599144,15 +625916,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -599161,12 +625930,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -599176,13 +625945,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -599191,13 +625960,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -599206,13 +625977,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -599221,13 +625992,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -599236,13 +626007,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -599251,13 +626022,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -599266,18 +626037,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599290,9 +626106,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599305,9 +626121,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599320,9 +626136,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599335,9 +626151,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599350,9 +626166,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599365,9 +626181,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599380,9 +626196,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599395,9 +626211,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599410,9 +626226,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599425,9 +626241,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599440,9 +626256,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599455,9 +626271,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599470,9 +626286,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599485,9 +626301,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599500,9 +626316,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599515,9 +626331,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599530,9 +626346,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599545,9 +626361,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599560,9 +626376,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599575,53 +626391,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -599629,13 +626400,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -599644,13 +626415,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -599659,13 +626430,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -599674,13 +626445,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -599689,15 +626460,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599710,9 +626541,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599720,14 +626551,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599740,9 +626571,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599755,9 +626586,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599770,9 +626601,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599785,9 +626616,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599795,14 +626626,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599810,14 +626641,14 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -599825,12 +626656,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub use self::__parse__UnaryOp::UnaryOpParser;
@@ -599900,22 +626731,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -599923,7 +626756,7 @@
         // 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,
         // State 2
-        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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 4, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, 5, -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 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, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
@@ -599935,7 +626768,7 @@
         // State 7
         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
-        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,
+        0, -169, -169, -169, -169, 17, -169, -169, -169, -169, -169, 0, 4, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, 5, -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 9
         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
@@ -599957,7 +626790,7 @@
         // State 18
         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, -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,
+        0, -169, -169, -169, -169, 17, -169, -169, -169, -169, -169, 0, 4, 0, -169, 0, 79, 0, -169, -169, 0, -169, -169, -169, 5, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 0,
         // State 20
         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
@@ -599983,45 +626816,45 @@
         // State 31
         0, 0, 0, 91, 0, 0, 0, 92, 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, 53, 0, 0, 0, 0, 54, -188, 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, -188, 0,
+        0, 0, 0, 53, 0, 0, 0, 0, 54, -191, 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, -191, 0,
         // State 33
         0, 0, 0, 91, 0, 0, 0, 92, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, 0, -220, 0, 0, 0, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 36
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, 0, -215, 0, 0, 0, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, 0, -218, 0, 0, 0, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, 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, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, 0, -214, 0, 0, 0, -214, -214, 0, -214, -214, -214, 0, -214, -214, 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, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, 0, -217, 0, 0, 0, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, 0,
         // State 39
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, 0, -216, 0, 0, 0, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, 0, -219, 0, 0, 0, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, 0,
         // State 40
-        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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, 0, -172, 0, 0, 0, -172, -172, 0, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, 0,
         // State 41
-        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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, 0, -173, 0, 0, 0, -173, -173, 0, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, 0,
         // 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, -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 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,
         // 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,
         // 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, -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
         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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, 0, -193, 0, 0, 0, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, 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 48
-        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, -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 49
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 50
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 51
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // 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
@@ -600029,7 +626862,7 @@
         // 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
-        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, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, 0, -171, 0, 0, 0, -171, -171, 0, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, 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,
         // State 57
@@ -600073,11 +626906,11 @@
         // 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,
         // State 77
-        0, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, 0, -192, 0, 0, 0, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, 0,
+        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 78
         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, -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, -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 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
@@ -600093,19 +626926,19 @@
         // State 86
         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 87
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -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, -200, 0, 0, 0, 0, 0, 0, 0, 0, 32, 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,
         // State 88
         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 89
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 90
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
         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, -99, 0,
         // State 93
-        0, 0, 0, 0, 0, 0, -187, 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, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 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, -190, 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, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 95
@@ -600115,29 +626948,29 @@
         // State 97
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -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, -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 99
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, 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 104
-        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, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -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, -192, 0,
         // State 105
         0, 0, 0, -57, 0, 0, 0, -57, 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 106
         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, 0, 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, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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,
         // State 108
         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,
         // State 109
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 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, -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]
@@ -600146,9 +626979,9 @@
         // State 0
         0,
         // State 1
-        -166,
+        -169,
         // State 2
-        -165,
+        -168,
         // State 3
         0,
         // State 4
@@ -600212,23 +627045,23 @@
         // State 33
         0,
         // State 34
-        -217,
+        -220,
         // State 35
-        -255,
+        -259,
         // State 36
-        -215,
+        -218,
         // State 37
         -138,
         // State 38
-        -214,
+        -217,
         // State 39
-        -216,
+        -219,
         // State 40
-        -169,
+        -172,
         // State 41
-        -170,
+        -173,
         // State 42
-        -167,
+        -170,
         // State 43
         0,
         // State 44
@@ -600254,7 +627087,7 @@
         // State 54
         0,
         // State 55
-        -168,
+        -171,
         // State 56
         0,
         // State 57
@@ -600414,33 +627247,33 @@
                 _ => 8,
             },
             62 => 71,
-            72 => 34,
-            73 => match state {
+            74 => 34,
+            75 => match state {
                 2 => 41,
                 _ => 40,
             },
-            74 => 2,
-            81 => match state {
+            76 => 2,
+            83 => match state {
                 30 => 104,
                 _ => 72,
             },
-            82 => match state {
+            84 => match state {
                 27 => 92,
                 _ => 84,
             },
-            84 => 46,
-            85 => 47,
-            86 => match state {
+            86 => 46,
+            87 => 47,
+            88 => match state {
                 28 => 95,
                 _ => 88,
             },
-            88 => match state {
+            90 => match state {
                 29 => 99,
                 _ => 89,
             },
-            90 => 29,
-            91 => 9,
-            92 => match state {
+            92 => 29,
+            93 => 9,
+            94 => match state {
                 0 => 35,
                 _ => 48,
             },
@@ -601685,25 +628518,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -601715,14 +628548,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -601734,19 +628567,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -601758,109 +628591,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -601872,109 +628705,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -601986,43 +628819,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -602034,220 +628867,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
             249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 124,
                 }
             }
             250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 126,
+                    nonterminal_produced: 125,
                 }
             }
             251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 127,
+                    nonterminal_produced: 126,
                 }
             }
             252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 128,
+                    nonterminal_produced: 127,
                 }
             }
             253 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 128,
+                }
+            }
+            254 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 129,
                 }
             }
-            254 => __state_machine::SimulatedReduce::Accept,
             255 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
+            256 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 131,
                 }
             }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => __state_machine::SimulatedReduce::Accept,
+            259 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 134,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -603086,15 +629943,27 @@
                 __reduce253(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             254 => {
+                __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            255 => {
+                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
                 // __ValueExpr = ValueExpr => ActionFn(27);
-                let __sym0 = __pop_Variant61(__symbols);
+                let __sym0 = __pop_Variant63(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
                 let __nt = super::__action27::<>(__sym0);
                 return Some(Ok(__nt));
             }
-            255 => {
-                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            259 => {
+                __reduce259(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -603189,6 +630058,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -603199,13 +630078,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -603289,6 +630168,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -603309,13 +630198,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -603459,66 +630348,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -603529,13 +630418,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -603549,43 +630438,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -603599,13 +630488,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -603639,13 +630528,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -603699,13 +630588,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -603746,10 +630635,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -603760,11 +630649,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -603775,11 +630664,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -603790,13 +630679,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -603807,11 +630696,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -603822,10 +630711,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -603836,11 +630725,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -603851,10 +630740,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -603865,11 +630754,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -603880,10 +630769,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -603894,13 +630783,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -603911,13 +630800,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -603928,10 +630817,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -603942,14 +630831,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -603960,14 +630849,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -603978,10 +630867,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -603992,13 +630881,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -604009,13 +630898,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -604026,10 +630915,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -604040,14 +630929,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -604058,14 +630947,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -604076,10 +630965,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -604090,13 +630979,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -604107,10 +630996,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -604121,11 +631010,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -604136,13 +631025,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -604153,14 +631042,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -604171,13 +631060,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -604188,10 +631077,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -604202,11 +631091,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -604217,13 +631106,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -604234,14 +631123,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -604252,13 +631141,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -604269,10 +631158,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -604283,11 +631172,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -604298,13 +631187,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -604315,14 +631204,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -604333,13 +631222,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -604350,10 +631239,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -604364,11 +631253,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -604379,13 +631268,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -604396,14 +631285,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -604414,13 +631303,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -604431,10 +631320,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -604445,11 +631334,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -604460,13 +631349,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -604477,14 +631366,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -604495,13 +631384,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -604512,10 +631401,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -604526,11 +631415,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -604541,13 +631430,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -604558,14 +631447,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -604576,13 +631465,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -604593,10 +631482,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -604607,11 +631496,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -604622,13 +631511,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -604639,14 +631528,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -604657,10 +631546,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -604671,10 +631560,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -604685,14 +631574,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -604703,15 +631592,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -604722,14 +631611,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -604740,15 +631629,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -604759,11 +631648,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -604774,11 +631663,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -604789,11 +631678,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -604804,11 +631693,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -604819,11 +631708,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -604834,11 +631723,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -604849,11 +631738,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -604864,11 +631753,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -604879,11 +631768,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -604894,11 +631783,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -604909,11 +631798,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -604924,11 +631813,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -604939,11 +631828,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -604954,11 +631843,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -604969,11 +631858,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -604984,11 +631873,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -604999,14 +631888,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -605017,11 +631906,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -605032,10 +631921,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -605046,13 +631935,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -605063,11 +631952,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -605078,11 +631967,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -605093,10 +631982,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -605107,13 +631996,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -605124,11 +632013,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -605139,11 +632028,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -605154,10 +632043,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -605168,13 +632057,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -605185,11 +632074,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -605200,11 +632089,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -605215,10 +632104,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -605229,13 +632118,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -605246,11 +632135,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -605261,11 +632150,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -605276,10 +632165,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -605290,13 +632179,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -605307,11 +632196,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -605322,11 +632211,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -605337,10 +632226,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -605351,13 +632240,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -605368,11 +632257,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -605383,7 +632272,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -605394,7 +632283,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -605405,11 +632294,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -605420,10 +632309,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -605434,13 +632323,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -605451,11 +632340,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -605466,14 +632355,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -605484,11 +632373,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -605499,11 +632388,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -605514,14 +632403,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -605532,13 +632421,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -605549,13 +632438,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -605566,13 +632455,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -605583,11 +632472,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -605598,14 +632487,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -605616,11 +632505,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -605631,14 +632520,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -605649,11 +632538,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -605664,11 +632553,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -605679,10 +632568,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -605693,7 +632582,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -605701,7 +632590,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -605712,14 +632601,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -605730,11 +632619,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -605745,10 +632634,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -605759,7 +632648,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -605768,7 +632657,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -605779,7 +632668,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -605790,7 +632679,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -605801,7 +632690,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -605815,7 +632704,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -605826,7 +632715,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -605838,7 +632727,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -605849,7 +632738,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -605862,7 +632751,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -605873,7 +632762,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -605884,7 +632773,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -605895,7 +632784,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -605908,7 +632797,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -605919,7 +632808,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -605930,7 +632819,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -605941,7 +632830,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -605953,7 +632842,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -605964,7 +632853,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -605974,7 +632863,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -605985,11 +632874,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -606000,11 +632889,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -606015,10 +632904,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -606029,11 +632918,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -606044,7 +632933,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -606053,7 +632942,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -606064,7 +632953,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -606073,7 +632962,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -606084,14 +632973,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -606102,7 +632991,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -606112,7 +633001,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -606123,14 +633012,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -606141,7 +633030,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -606152,7 +633041,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -606163,7 +633052,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -606173,7 +633062,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -606184,9 +633073,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -606195,7 +633084,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -606206,9 +633095,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -606216,7 +633105,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -606227,11 +633116,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -606242,13 +633131,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -606259,11 +633148,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -606274,10 +633163,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -606288,11 +633177,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -606303,13 +633192,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -606320,11 +633209,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -606335,13 +633224,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -606352,7 +633241,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -606362,7 +633251,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -606373,7 +633262,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -606382,7 +633271,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -606393,11 +633282,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -606408,13 +633297,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -606423,13 +633314,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -606438,13 +633329,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -606453,15 +633344,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -606470,11 +633359,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -606485,15 +633374,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -606502,16 +633389,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -606520,11 +633406,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -606535,15 +633421,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -606552,13 +633438,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -606567,12 +633456,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -606581,13 +633471,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -606598,13 +633488,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -606613,13 +633503,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -606628,13 +633517,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -606643,13 +633534,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -606658,15 +633549,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -606675,15 +633564,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -606692,15 +633579,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -606709,15 +633594,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -606726,7 +633611,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -606738,62 +633674,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -606802,12 +633685,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -606816,17 +633705,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -606835,16 +633723,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -606853,16 +633738,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -606871,13 +633752,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -606886,12 +633771,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -606900,15 +633789,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -606918,13 +633807,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -606933,13 +633822,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -606948,13 +633836,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -606963,16 +633854,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -606981,13 +633869,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -606996,15 +633884,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -607013,17 +633899,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -607032,18 +633917,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -607052,13 +633932,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -607067,12 +633949,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -607081,13 +633968,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -607096,15 +633988,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -607113,15 +634003,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -607130,15 +634017,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -607147,12 +634032,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -607161,13 +634049,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -607176,13 +634066,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -607191,15 +634083,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -607208,12 +634097,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -607223,13 +634112,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -607238,13 +634127,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -607253,13 +634144,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -607268,13 +634159,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -607283,13 +634174,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -607298,13 +634189,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -607313,18 +634204,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607337,9 +634273,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607352,9 +634288,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607367,9 +634303,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607382,9 +634318,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607397,9 +634333,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607412,9 +634348,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607427,9 +634363,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607442,9 +634378,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607457,9 +634393,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607472,9 +634408,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607487,9 +634423,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607502,9 +634438,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607517,9 +634453,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607532,9 +634468,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607547,9 +634483,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607562,9 +634498,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607577,9 +634513,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607592,9 +634528,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607607,9 +634543,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607622,53 +634558,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -607676,13 +634567,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -607691,13 +634582,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -607706,13 +634597,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -607721,13 +634612,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -607736,15 +634627,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607757,9 +634708,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607767,14 +634718,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607787,9 +634738,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607802,9 +634753,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607817,9 +634768,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607832,9 +634783,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607842,14 +634793,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607857,14 +634808,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce255<
+    pub(crate) fn __reduce259<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -607872,12 +634823,12 @@
     ) -> (usize, usize)
     {
         // __WhileStmt = WhileStmt => ActionFn(13);
-        let __sym0 = __pop_Variant62(__symbols);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 131)
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (1, 134)
     }
 }
 pub(crate) use self::__parse__ValueExpr::ValueExprParser;
@@ -607947,22 +634898,24 @@
         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::ReturnStmt),
-        Variant53(ast::Statement),
-        Variant54(ast::Struct),
-        Variant55(core::option::Option<ast::StructField>),
-        Variant56(ast::StructInitExpr),
-        Variant57(core::option::Option<(ast::Ident, ast::StructInitField)>),
-        Variant58(ast::TypeQualifier),
-        Variant59(alloc::vec::Vec<ast::TypeQualifier>),
-        Variant60(ast::UnaryOp),
-        Variant61(ast::ValueExpr),
-        Variant62(ast::WhileStmt),
+        Variant47(alloc::vec::Vec<ast::Module>),
+        Variant48(ast::ModuleStatement),
+        Variant49(Vec<ast::Module>),
+        Variant50(ast::PathExpr),
+        Variant51(ast::PathSegment),
+        Variant52(Vec<ast::PathSegment>),
+        Variant53(core::option::Option<Vec<ast::PathSegment>>),
+        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::TypeQualifier),
+        Variant61(alloc::vec::Vec<ast::TypeQualifier>),
+        Variant62(ast::UnaryOp),
+        Variant63(ast::ValueExpr),
+        Variant64(ast::WhileStmt),
     }
     const __ACTION: &[i16] = &[
         // State 0
@@ -607976,7 +634929,7 @@
         // 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,
+        0, -169, -169, -169, -169, 16, -169, -169, -169, -169, -169, 0, 17, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, 18, -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 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
@@ -607994,7 +634947,7 @@
         // 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,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, 17, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, 18, -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 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
@@ -608006,7 +634959,7 @@
         // 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,
+        0, -169, -169, -169, -169, 16, -169, -169, -169, -169, -169, 0, 17, 0, -169, 0, 116, -169, -169, -169, 0, -169, -169, -169, 18, 0, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -169, -169, -169, 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
@@ -608020,7 +634973,7 @@
         // 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, -174, 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,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, -177, 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
@@ -608032,7 +634985,7 @@
         // 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,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -169, 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
@@ -608040,7 +634993,7 @@
         // 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, -173, 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, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -176, 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
@@ -608072,7 +635025,7 @@
         // State 52
         0, 0, 0, 142, 0, 0, 0, 143, 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, -188, 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, -188, 0,
+        0, 0, 0, 78, 0, 0, 0, 0, 79, -191, 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, -191, 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
@@ -608094,31 +635047,31 @@
         // 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, -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, -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 65
-        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
+        0, -220, -220, -220, -220, 0, -220, -220, -220, -220, -220, 0, 0, -220, -220, 0, 0, -220, -220, -220, 0, -220, -220, -220, 0, -220, -220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, -220, -220, -220, 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, -193, -193, -193, -193, 0, -193, -193, -193, -193, -193, 0, 0, -193, -193, 0, 0, -193, -193, -193, 0, -193, -193, -193, 0, -193, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, -193, -193, -193, 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 68
-        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, -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 69
-        -212, 0, 0, -212, 0, -212, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, -212, 0, 0, -212, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, -212,
+        -215, 0, 0, -215, 0, -215, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, -215, 0, 0, -215, 0, 0, 0, 0, 0, 0, -215, 0, 0, 0, 0, 0, 0, 0, -215,
         // State 70
-        -211, 0, 0, -211, 0, -211, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, -211, 0, 0, -211, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, -211,
+        -214, 0, 0, -214, 0, -214, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, -214, 0, 0, -214, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, -214,
         // State 71
-        0, -215, -215, -215, -215, 0, -215, -215, -215, -215, -215, 0, 0, -215, -215, 0, 0, -215, -215, -215, 0, -215, -215, -215, 0, -215, -215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -215, -215, -215, -215, 0,
+        0, -218, -218, -218, -218, 0, -218, -218, -218, -218, -218, 0, 0, -218, -218, 0, 0, -218, -218, -218, 0, -218, -218, -218, 0, -218, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -218, -218, -218, -218, 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, -214, -214, -214, -214, 0, -214, -214, -214, -214, -214, 0, 0, -214, -214, 0, 0, -214, -214, -214, 0, -214, -214, -214, 0, -214, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, -214, 0,
+        0, -217, -217, -217, -217, 0, -217, -217, -217, -217, -217, 0, 0, -217, -217, 0, 0, -217, -217, -217, 0, -217, -217, -217, 0, -217, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, -217, -217, -217, 0,
         // State 74
-        0, -216, -216, -216, -216, 0, -216, -216, -216, -216, -216, 0, 0, -216, -216, 0, 0, -216, -216, -216, 0, -216, -216, -216, 0, -216, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, -216, -216, -216, 0,
+        0, -219, -219, -219, -219, 0, -219, -219, -219, -219, -219, 0, 0, -219, -219, 0, 0, -219, -219, -219, 0, -219, -219, -219, 0, -219, -219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -219, -219, -219, -219, 0,
         // State 75
-        -213, 0, 0, -213, 0, -213, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, -213, 0, 0, -213, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0, 0, 0, 0, 0, -213,
+        -216, 0, 0, -216, 0, -216, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, -216, 0, 0, -216, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, -216,
         // State 76
-        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, -218, -218, -218, 0, 0, -218, 0, 0, 0, 0, -218, 0, 0, 0, -218, 0, 0, 0, -218, 0,
+        0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, -221, -221, 0, 0, -221, 0, 0, 0, 0, -221, 0, 0, 0, -221, 0, 0, 0, -221, 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
@@ -608152,7 +635105,7 @@
         // 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,
+        0, -172, -172, -172, -172, 0, -172, -172, -172, -172, -172, 0, -172, -172, -172, 0, 0, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, -172, -172, -172, 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
@@ -608168,9 +635121,9 @@
         // 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, -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, -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 102
-        0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -175, -175, 0, 0, -175, 0, 0, 0, 0, -175, 0, 0, 0, -175, 0, 0, 0, -175, 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, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 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
@@ -608180,41 +635133,41 @@
         // 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, -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, -176, -176, -176, 0, 0, -176, 0, 0, 0, 0, -176, 0, 0, 0, -176, 0, 0, 0, -176, 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 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,
+        0, -173, -173, -173, -173, 0, -173, -173, -173, -173, -173, 0, -173, -173, -173, 0, 0, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, -173, -173, -173, 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,
+        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 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, -192, -192, -192, -192, 0, -192, -192, -192, -192, -192, 0, 0, -192, -192, 0, 0, -192, -192, -192, 0, -192, -192, -192, 0, -192, -192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -192, -192, -192, -192, 0,
+        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 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, -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, -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 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, -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, -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 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, -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, -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, -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 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, -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, -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 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
@@ -608224,7 +635177,7 @@
         // 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,
+        0, -171, -171, -171, -171, 0, -171, -171, -171, -171, -171, 0, -171, -171, -171, 0, 0, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, -171, -171, -171, 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, 145, 0,
         // State 131
@@ -608242,19 +635195,19 @@
         // State 137
         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 138
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -197, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, -197, 0, -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, -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, 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 140
-        0, 0, 0, -209, 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, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        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, 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,
         // State 141
-        0, 0, 0, -203, 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, -203, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 154, 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, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 143
         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 144
-        0, 0, 0, 0, 0, 0, -187, 0, 0, -187, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0,
+        0, 0, 0, 0, 0, 0, -190, 0, 0, -190, 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, -190, 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
@@ -608268,19 +635221,19 @@
         // State 150
         0, 0, 0, -56, 0, 0, 0, -56, 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, -198, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -198, 0, -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, -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 152
-        0, 0, 0, -210, 0, 0, 0, -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, -210, 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, -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, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 153
-        0, 0, 0, -204, 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, -204, 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, -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, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 154
-        0, 0, 0, -205, 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, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -208, 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, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 155
-        0, 0, 0, -206, 0, 0, 0, -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, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -209, 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, 0, -209, 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, -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, -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, -192, 0,
         // State 158
         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 159
@@ -608294,7 +635247,7 @@
         // State 163
         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 164
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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 165
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 166
@@ -608302,7 +635255,7 @@
         // State 167
         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 168
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -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]
@@ -608431,7 +635384,7 @@
         // State 60
         0,
         // State 61
-        -256,
+        -260,
         // State 62
         0,
         // State 63
@@ -608461,7 +635414,7 @@
         // State 75
         0,
         // State 76
-        -218,
+        -221,
         // State 77
         0,
         // State 78
@@ -608725,22 +635678,22 @@
             63 => 102,
             65 => 103,
             69 => 23,
-            72 => match state {
+            74 => match state {
                 11 | 23 => 104,
                 22 => 117,
                 _ => 65,
             },
-            73 => match state {
+            75 => match state {
                 14 => 110,
                 _ => 93,
             },
-            74 => 14,
-            76 => 105,
-            77 => match state {
+            76 => 14,
+            78 => 105,
+            79 => match state {
                 23 => 122,
                 _ => 106,
             },
-            81 => match state {
+            83 => match state {
                 34 => 133,
                 41 => 146,
                 47 => 157,
@@ -608748,26 +635701,26 @@
                 59 => 167,
                 _ => 97,
             },
-            82 => match state {
+            84 => match state {
                 40 => 143,
                 _ => 132,
             },
-            84 => 66,
-            85 => 67,
-            86 => match state {
+            86 => 66,
+            87 => 67,
+            88 => match state {
                 44 => 147,
                 45 => 148,
                 51 => 160,
                 _ => 139,
             },
-            88 => match state {
+            90 => match state {
                 46 => 152,
                 _ => 140,
             },
-            90 => 46,
-            91 => 6,
-            92 => 68,
-            93 => match state {
+            92 => 46,
+            93 => 6,
+            94 => 68,
+            95 => match state {
                 0 => 61,
                 _ => 107,
             },
@@ -610012,25 +636965,25 @@
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             163 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 71,
+                    nonterminal_produced: 72,
                 }
             }
             164 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
@@ -610042,14 +636995,14 @@
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 73,
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
                 }
             }
             168 => {
@@ -610061,19 +637014,19 @@
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 74,
+                    nonterminal_produced: 75,
                 }
             }
             170 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 75,
                 }
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 75,
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
                 }
             }
             172 => {
@@ -610085,109 +637038,109 @@
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 76,
+                    nonterminal_produced: 77,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 78,
                 }
             }
             177 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 77,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 78,
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 5,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 0,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 83,
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
                 }
             }
             191 => {
@@ -610199,109 +637152,109 @@
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 84,
+                    nonterminal_produced: 85,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 85,
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 85,
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
                 }
             }
             196 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 86,
+                    nonterminal_produced: 87,
                 }
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 86,
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
-                    nonterminal_produced: 87,
+                    states_to_pop: 4,
+                    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: 2,
-                    nonterminal_produced: 88,
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
                 }
             }
             204 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            205 => {
-                __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 88,
-                }
-            }
-            206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
-            207 => {
+            205 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 90,
                 }
             }
             208 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 90,
                 }
             }
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 90,
+                    states_to_pop: 0,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
@@ -610313,43 +637266,43 @@
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    nonterminal_produced: 92,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 91,
+                    states_to_pop: 2,
+                    nonterminal_produced: 92,
                 }
             }
             213 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 93,
                 }
             }
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 94,
                 }
             }
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 93,
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
                 }
             }
             218 => {
@@ -610361,220 +637314,244 @@
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    states_to_pop: 3,
+                    nonterminal_produced: 95,
                 }
             }
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
             249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 124,
                 }
             }
             250 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 126,
+                    nonterminal_produced: 125,
                 }
             }
             251 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 127,
+                    nonterminal_produced: 126,
                 }
             }
             252 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 128,
+                    nonterminal_produced: 127,
                 }
             }
             253 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 129,
+                    nonterminal_produced: 128,
                 }
             }
             254 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            255 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 130,
                 }
             }
-            255 => __state_machine::SimulatedReduce::Accept,
+            256 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 131,
+                }
+            }
+            257 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 132,
+                }
+            }
+            258 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 133,
+                }
+            }
+            259 => __state_machine::SimulatedReduce::Accept,
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -611416,8 +638393,20 @@
                 __reduce254(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             255 => {
+                __reduce255(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            256 => {
+                __reduce256(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            257 => {
+                __reduce257(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            258 => {
+                __reduce258(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            259 => {
                 // __WhileStmt = WhileStmt => ActionFn(13);
-                let __sym0 = __pop_Variant62(__symbols);
+                let __sym0 = __pop_Variant64(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
                 let __nt = super::__action13::<>(__sym0);
@@ -611516,6 +638505,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant44<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -611526,13 +638525,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant50<
+    fn __pop_Variant52<
     >(
         __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),
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -611616,6 +638615,16 @@
             _ => __symbol_type_mismatch()
         }
     }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Module>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
     fn __pop_Variant21<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
@@ -611636,13 +638645,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant59<
+    fn __pop_Variant61<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, alloc::vec::Vec<ast::TypeQualifier>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -611786,66 +638795,66 @@
             _ => __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)
+    ) -> (usize, ast::ModuleStatement, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant49<
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
     >(
         __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::ReturnStmt, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
-    fn __pop_Variant53<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Statement, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
     fn __pop_Variant54<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::Struct, 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)>
@@ -611856,13 +638865,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant56<
+    fn __pop_Variant58<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::StructInitExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -611876,43 +638885,43 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant58<
-    >(
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::TypeQualifier, usize)
-     {
-        match __symbols.pop() {
-            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
-            _ => __symbol_type_mismatch()
-        }
-    }
     fn __pop_Variant60<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
-    ) -> (usize, ast::UnaryOp, usize)
+    ) -> (usize, ast::TypeQualifier, usize)
      {
         match __symbols.pop() {
             Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant61<
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant63<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::ValueExpr, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant63(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant62<
+    fn __pop_Variant64<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, ast::WhileStmt, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant64(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -611926,13 +638935,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant57<
+    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::Variant57(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -611966,13 +638975,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant51<
+    fn __pop_Variant53<
     >(
         __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),
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -612026,13 +639035,13 @@
             _ => __symbol_type_mismatch()
         }
     }
-    fn __pop_Variant55<
+    fn __pop_Variant57<
     >(
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
     ) -> (usize, core::option::Option<ast::StructField>, usize)
      {
         match __symbols.pop() {
-            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
             _ => __symbol_type_mismatch()
         }
     }
@@ -612073,10 +639082,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(153);
+        // "*"* =  => ActionFn(157);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action153::<>(&__start, &__end);
+        let __nt = super::__action157::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -612087,11 +639096,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(154);
+        // "*"* = "*"+ => ActionFn(158);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action154::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -612102,11 +639111,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(177);
+        // "*"+ = "*" => ActionFn(181);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action181::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -612117,13 +639126,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(178);
+        // "*"+ = "*"+, "*" => ActionFn(182);
         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::__action178::<>(__sym0, __sym1);
+        let __nt = super::__action182::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -612134,11 +639143,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(143);
+        // "extern"? = "extern" => ActionFn(147);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action143::<>(__sym0);
+        let __nt = super::__action147::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -612149,10 +639158,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(144);
+        // "extern"? =  => ActionFn(148);
         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::__action148::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -612163,11 +639172,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(155);
+        // "mut"? = "mut" => ActionFn(159);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action159::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -612178,10 +639187,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(156);
+        // "mut"? =  => ActionFn(160);
         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::__action160::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -612192,11 +639201,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(145);
+        // "pub"? = "pub" => ActionFn(149);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action145::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -612207,10 +639216,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(146);
+        // "pub"? =  => 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::__action146::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -612221,13 +639230,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(141);
+        // ("->" <Type>) = "->", Type => ActionFn(145);
         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::__action141::<>(__sym0, __sym1);
+        let __nt = super::__action145::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -612238,13 +639247,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(230);
+        // ("->" <Type>)? = "->", Type => ActionFn(234);
         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::__action230::<>(__sym0, __sym1);
+        let __nt = super::__action234::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -612255,10 +639264,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(140);
+        // ("->" <Type>)? =  => 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::__action140::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -612269,14 +639278,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(138);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(142);
         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::__action138::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action142::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -612287,14 +639296,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(239);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(243);
         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::__action239::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action243::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -612305,10 +639314,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(137);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(141);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action137::<>(&__start, &__end);
+        let __nt = super::__action141::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -612319,13 +639328,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(150);
+        // ("else" <Block>) = "else", Block => ActionFn(154);
         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::__action150::<>(__sym0, __sym1);
+        let __nt = super::__action154::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -612336,13 +639345,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(242);
+        // ("else" <Block>)? = "else", Block => ActionFn(246);
         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::__action242::<>(__sym0, __sym1);
+        let __nt = super::__action246::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -612353,10 +639362,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(149);
+        // ("else" <Block>)? =  => ActionFn(153);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action149::<>(&__start, &__end);
+        let __nt = super::__action153::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -612367,14 +639376,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(132);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(136);
         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::__action132::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -612385,14 +639394,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(245);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(249);
         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::__action245::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -612403,10 +639412,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(131);
+        // ("{" <Comma<Ident>> "}")? =  => 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::__action131::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -612417,13 +639426,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(176);
+        // (<Expression> ",") = Expression, "," => ActionFn(180);
         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::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action180::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -612434,10 +639443,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(174);
+        // (<Expression> ",")* =  => ActionFn(178);
         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::__action178::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -612448,11 +639457,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(175);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(179);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action179::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -612463,13 +639472,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(248);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(252);
         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::__action248::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -612480,14 +639489,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(249);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(253);
         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::__action249::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -612498,13 +639507,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(188);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(192);
         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::__action188::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -612515,10 +639524,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(186);
+        // (<FnParam> ",")* =  => 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::__action186::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -612529,11 +639538,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(187);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(191);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action187::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -612544,13 +639553,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(252);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(256);
         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::__action252::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -612561,14 +639570,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(253);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(257);
         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::__action253::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -612579,13 +639588,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(201);
+        // (<Ident> ",") = Ident, "," => ActionFn(205);
         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::__action201::<>(__sym0, __sym1);
+        let __nt = super::__action205::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -612596,10 +639605,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(199);
+        // (<Ident> ",")* =  => ActionFn(203);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action199::<>(&__start, &__end);
+        let __nt = super::__action203::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -612610,11 +639619,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(200);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(204);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action200::<>(__sym0);
+        let __nt = super::__action204::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -612625,13 +639634,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(256);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(260);
         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);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -612642,14 +639651,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(257);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(261);
         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);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -612660,13 +639669,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(196);
+        // (<Ident> "::") = Ident, "::" => ActionFn(200);
         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::__action196::<>(__sym0, __sym1);
+        let __nt = super::__action200::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -612677,10 +639686,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(194);
+        // (<Ident> "::")* =  => ActionFn(198);
         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);
+        let __nt = super::__action198::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -612691,11 +639700,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(195);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(199);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action195::<>(__sym0);
+        let __nt = super::__action199::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -612706,13 +639715,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(260);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(264);
         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::__action260::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -612723,14 +639732,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(261);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(265);
         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::__action261::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -612741,13 +639750,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(193);
+        // (<StructField> ",") = StructField, "," => ActionFn(197);
         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::__action193::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -612758,10 +639767,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(191);
+        // (<StructField> ",")* =  => 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::__action191::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -612772,11 +639781,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(192);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action192::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -612787,13 +639796,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(264);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(268);
         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::__action264::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -612804,14 +639813,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(265);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(269);
         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::__action265::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -612822,13 +639831,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(183);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(187);
         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::__action183::<>(__sym0, __sym1);
+        let __nt = super::__action187::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -612839,10 +639848,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(181);
+        // (<StructInitField> ",")* =  => ActionFn(185);
         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);
+        let __nt = super::__action185::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -612853,11 +639862,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(182);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(186);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action186::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -612868,13 +639877,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(268);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(272);
         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::__action268::<>(__sym0, __sym1);
+        let __nt = super::__action272::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -612885,14 +639894,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(269);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(273);
         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::__action269::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action273::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -612903,13 +639912,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(173);
+        // (<Type> ",") = Type, "," => ActionFn(177);
         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::__action173::<>(__sym0, __sym1);
+        let __nt = super::__action177::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -612920,10 +639929,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(171);
+        // (<Type> ",")* =  => ActionFn(175);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action171::<>(&__start, &__end);
+        let __nt = super::__action175::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -612934,11 +639943,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(172);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(176);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action176::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -612949,13 +639958,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(272);
+        // (<Type> ",")+ = Type, "," => ActionFn(276);
         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::__action272::<>(__sym0, __sym1);
+        let __nt = super::__action276::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -612966,14 +639975,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(273);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(277);
         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::__action273::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action277::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -612984,10 +639993,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(166);
+        // @L =  => 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::__action166::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -612998,10 +640007,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(165);
+        // @R =  => ActionFn(169);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action165::<>(&__start, &__end);
+        let __nt = super::__action169::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -613012,14 +640021,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(343);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(347);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action343::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action347::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -613030,15 +640039,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(344);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(348);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action344::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action348::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -613049,14 +640058,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(345);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(349);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
+        let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action345::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action349::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -613067,15 +640076,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(346);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(350);
         assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant56(__symbols);
+        let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant48(__symbols);
+        let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action346::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action350::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -613086,11 +640095,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(347);
+        // BinaryFirstLvlOp = "==" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -613101,11 +640110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(348);
+        // BinaryFirstLvlOp = "!=" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -613116,11 +640125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(349);
+        // BinaryFirstLvlOp = "<" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -613131,11 +640140,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(350);
+        // BinaryFirstLvlOp = ">" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -613146,11 +640155,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(351);
+        // BinaryFirstLvlOp = "<=" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action351::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -613161,11 +640170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(352);
+        // BinaryFirstLvlOp = ">=" => ActionFn(356);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action352::<>(__sym0);
+        let __nt = super::__action356::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -613176,11 +640185,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(353);
+        // BinaryFirstLvlOp = "&&" => ActionFn(357);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action353::<>(__sym0);
+        let __nt = super::__action357::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -613191,11 +640200,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(354);
+        // BinaryFirstLvlOp = "||" => ActionFn(358);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action354::<>(__sym0);
+        let __nt = super::__action358::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -613206,11 +640215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(355);
+        // BinarySecondLvlOp = "/" => ActionFn(359);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action355::<>(__sym0);
+        let __nt = super::__action359::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -613221,11 +640230,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(356);
+        // BinarySecondLvlOp = "*" => ActionFn(360);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action356::<>(__sym0);
+        let __nt = super::__action360::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -613236,11 +640245,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(357);
+        // BinarySecondLvlOp = "%" => ActionFn(361);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action357::<>(__sym0);
+        let __nt = super::__action361::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -613251,11 +640260,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(358);
+        // BinaryThirdLvlOp = "+" => ActionFn(362);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action358::<>(__sym0);
+        let __nt = super::__action362::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -613266,11 +640275,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(359);
+        // BinaryThirdLvlOp = "-" => ActionFn(363);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action359::<>(__sym0);
+        let __nt = super::__action363::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -613281,11 +640290,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(360);
+        // BinaryThirdLvlOp = "&" => ActionFn(364);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action360::<>(__sym0);
+        let __nt = super::__action364::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -613296,11 +640305,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(361);
+        // BinaryThirdLvlOp = "|" => ActionFn(365);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action361::<>(__sym0);
+        let __nt = super::__action365::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -613311,11 +640320,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(362);
+        // BinaryThirdLvlOp = "^" => ActionFn(366);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action362::<>(__sym0);
+        let __nt = super::__action366::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -613326,14 +640335,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(363);
+        // Block = "{", List<Statement>, "}" => ActionFn(367);
         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::__action363::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -613344,11 +640353,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(410);
+        // Comma<Expression> = Expression => ActionFn(414);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -613359,10 +640368,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(411);
+        // Comma<Expression> =  => 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::__action411::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -613373,13 +640382,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(412);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(416);
         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::__action412::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -613390,11 +640399,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(413);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(417);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action413::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -613405,11 +640414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(416);
+        // Comma<FnParam> = FnParam => ActionFn(420);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action420::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -613420,10 +640429,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(417);
+        // Comma<FnParam> =  => ActionFn(421);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action417::<>(&__start, &__end);
+        let __nt = super::__action421::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -613434,13 +640443,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(418);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(422);
         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::__action418::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -613451,11 +640460,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(419);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(423);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -613466,11 +640475,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(420);
+        // Comma<Ident> = Ident => ActionFn(424);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action420::<>(__sym0);
+        let __nt = super::__action424::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -613481,10 +640490,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(421);
+        // Comma<Ident> =  => ActionFn(425);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action421::<>(&__start, &__end);
+        let __nt = super::__action425::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -613495,13 +640504,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(422);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(426);
         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::__action422::<>(__sym0, __sym1);
+        let __nt = super::__action426::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -613512,11 +640521,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(423);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(427);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action427::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -613527,11 +640536,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(432);
+        // Comma<StructField> = StructField => ActionFn(436);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action432::<>(__sym0);
+        let __nt = super::__action436::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -613542,10 +640551,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(433);
+        // Comma<StructField> =  => ActionFn(437);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action433::<>(&__start, &__end);
+        let __nt = super::__action437::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -613556,13 +640565,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(434);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(438);
         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::__action434::<>(__sym0, __sym1);
+        let __nt = super::__action438::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -613573,11 +640582,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(435);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(439);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action435::<>(__sym0);
+        let __nt = super::__action439::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -613588,11 +640597,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(436);
+        // Comma<StructInitField> = StructInitField => ActionFn(440);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action436::<>(__sym0);
+        let __nt = super::__action440::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -613603,10 +640612,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(437);
+        // Comma<StructInitField> =  => ActionFn(441);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action437::<>(&__start, &__end);
+        let __nt = super::__action441::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -613617,13 +640626,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(438);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(442);
         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::__action438::<>(__sym0, __sym1);
+        let __nt = super::__action442::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -613634,11 +640643,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(439);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(443);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action439::<>(__sym0);
+        let __nt = super::__action443::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -613649,11 +640658,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(440);
+        // Comma<Type> = Type => ActionFn(444);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action440::<>(__sym0);
+        let __nt = super::__action444::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -613664,10 +640673,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(441);
+        // Comma<Type> =  => ActionFn(445);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action441::<>(&__start, &__end);
+        let __nt = super::__action445::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -613678,13 +640687,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(442);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(446);
         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::__action442::<>(__sym0, __sym1);
+        let __nt = super::__action446::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -613695,11 +640704,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(443);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(447);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action443::<>(__sym0);
+        let __nt = super::__action447::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -613710,7 +640719,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(364);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(368);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -613721,7 +640730,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -613732,11 +640741,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(424);
+        // DoubleColon<Ident> = Ident => ActionFn(428);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action424::<>(__sym0);
+        let __nt = super::__action428::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -613747,10 +640756,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(425);
+        // DoubleColon<Ident> =  => ActionFn(429);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action425::<>(&__start, &__end);
+        let __nt = super::__action429::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -613761,13 +640770,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(426);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(430);
         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::__action426::<>(__sym0, __sym1);
+        let __nt = super::__action430::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -613778,11 +640787,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(427);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(431);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action431::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -613793,14 +640802,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(85);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(86);
         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::__action85::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action86::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -613811,11 +640820,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(86);
+        // Expression = Expression3 => ActionFn(87);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action86::<>(__sym0);
+        let __nt = super::__action87::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -613826,11 +640835,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(75);
+        // Expression0 = Term => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -613841,14 +640850,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(365);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(369);
         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::__action365::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -613859,13 +640868,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(366);
+        // Expression1 = "&", Expression1 => ActionFn(370);
         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::__action366::<>(__sym0, __sym1);
+        let __nt = super::__action370::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -613876,13 +640885,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(367);
+        // Expression1 = "*", Expression1 => ActionFn(371);
         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::__action367::<>(__sym0, __sym1);
+        let __nt = super::__action371::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -613893,13 +640902,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(79);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(80);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action79::<>(__sym0, __sym1);
+        let __nt = super::__action80::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -613910,11 +640919,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(80);
+        // Expression1 = Expression0 => ActionFn(81);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action80::<>(__sym0);
+        let __nt = super::__action81::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -613925,14 +640934,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(81);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(82);
         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);
+        let __nt = super::__action82::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -613943,11 +640952,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(82);
+        // Expression2 = Expression1 => ActionFn(83);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action82::<>(__sym0);
+        let __nt = super::__action83::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -613958,14 +640967,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(83);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(84);
         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::__action83::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action84::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -613976,11 +640985,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(84);
+        // Expression3 = Expression2 => ActionFn(85);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action84::<>(__sym0);
+        let __nt = super::__action85::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -613991,11 +641000,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(151);
+        // Expression? = Expression => ActionFn(155);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action151::<>(__sym0);
+        let __nt = super::__action155::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -614006,10 +641015,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(152);
+        // Expression? =  => ActionFn(156);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action152::<>(&__start, &__end);
+        let __nt = super::__action156::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -614020,7 +641029,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(368);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(372);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -614028,7 +641037,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -614039,14 +641048,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(369);
+        // FnParam = Ident, ":", Type => ActionFn(373);
         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::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -614057,11 +641066,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(184);
+        // FnParam? = FnParam => ActionFn(188);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action184::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -614072,10 +641081,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(185);
+        // FnParam? =  => ActionFn(189);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action185::<>(&__start, &__end);
+        let __nt = super::__action189::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -614086,7 +641095,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(370);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -614095,7 +641104,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -614106,7 +641115,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(371);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(375);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -614117,7 +641126,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -614128,7 +641137,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(372);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -614142,7 +641151,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -614153,7 +641162,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(373);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -614165,7 +641174,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -614176,7 +641185,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(374);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -614189,7 +641198,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action374::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -614200,7 +641209,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(375);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -614211,7 +641220,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -614222,7 +641231,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(376);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(380);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -614235,7 +641244,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -614246,7 +641255,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(377);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(381);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -614257,7 +641266,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -614268,7 +641277,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(378);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(382);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -614280,7 +641289,7 @@
         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::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -614291,7 +641300,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(379);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(383);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -614301,7 +641310,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -614312,11 +641321,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(380);
+        // Ident = "identifier" => ActionFn(384);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action380::<>(__sym0);
+        let __nt = super::__action384::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -614327,11 +641336,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(197);
+        // Ident? = Ident => ActionFn(201);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action197::<>(__sym0);
+        let __nt = super::__action201::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -614342,10 +641351,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(198);
+        // Ident? =  => ActionFn(202);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action198::<>(&__start, &__end);
+        let __nt = super::__action202::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -614356,11 +641365,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident => ActionFn(381);
+        // IdentWithOptionalType = Ident => ActionFn(385);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action381::<>(__sym0);
+        let __nt = super::__action385::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (1, 62)
     }
@@ -614371,7 +641380,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(382);
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -614380,7 +641389,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (5, 62)
     }
@@ -614391,7 +641400,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(383);
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(387);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -614400,7 +641409,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (5, 63)
     }
@@ -614411,14 +641420,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(384);
+        // IfStmt = "if", Expression, Block => ActionFn(388);
         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::__action384::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
         (3, 63)
     }
@@ -614429,7 +641438,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(385);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(389);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -614439,7 +641448,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (6, 64)
     }
@@ -614450,14 +641459,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(386);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(390);
         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::__action386::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
         (3, 64)
     }
@@ -614468,7 +641477,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(387);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(391);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -614479,7 +641488,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action387::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action391::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -614490,7 +641499,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(388);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(392);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -614500,7 +641509,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action392::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -614511,9 +641520,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(389);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(393);
         assert!(__symbols.len() >= 7);
-        let __sym6 = __pop_Variant56(__symbols);
+        let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant6(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -614522,7 +641531,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action389::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action393::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (7, 65)
     }
@@ -614533,9 +641542,9 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(390);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(394);
         assert!(__symbols.len() >= 6);
-        let __sym5 = __pop_Variant56(__symbols);
+        let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant6(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -614543,7 +641552,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action390::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action394::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
         (6, 65)
     }
@@ -614554,11 +641563,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(128);
+        // List<Import> = Import => ActionFn(130);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action128::<>(__sym0);
+        let __nt = super::__action130::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (1, 66)
     }
@@ -614569,13 +641578,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(129);
+        // List<Import> = List<Import>, Import => ActionFn(131);
         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::__action129::<>(__sym0, __sym1);
+        let __nt = super::__action131::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
         (2, 66)
     }
@@ -614586,11 +641595,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(126);
+        // List<Import>? = List<Import> => ActionFn(128);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action126::<>(__sym0);
+        let __nt = super::__action128::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (1, 67)
     }
@@ -614601,10 +641610,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(127);
+        // List<Import>? =  => 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::__action127::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
         (0, 67)
     }
@@ -614615,11 +641624,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(124);
-        let __sym0 = __pop_Variant47(__symbols);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(126);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action124::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (1, 68)
     }
@@ -614630,13 +641639,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(125);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(127);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant47(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action125::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
         (2, 68)
     }
@@ -614647,11 +641656,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(158);
-        let __sym0 = __pop_Variant53(__symbols);
+        // List<Statement> = Statement => ActionFn(162);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action162::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (1, 69)
     }
@@ -614662,13 +641671,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(159);
+        // List<Statement> = List<Statement>, Statement => ActionFn(163);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant53(__symbols);
+        let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action159::<>(__sym0, __sym1);
+        let __nt = super::__action163::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
         (2, 69)
     }
@@ -614679,7 +641688,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(428);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(432);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -614689,7 +641698,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action428::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action432::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (6, 70)
     }
@@ -614700,7 +641709,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(429);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(433);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -614709,7 +641718,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action429::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action433::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
         (5, 70)
     }
@@ -614720,11 +641729,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(120);
-        let __sym0 = __pop_Variant37(__symbols);
+        // Module+ = Module => ActionFn(132);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action120::<>(__sym0);
+        let __nt = super::__action132::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
         (1, 71)
     }
@@ -614735,13 +641744,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(121);
-        let __sym0 = __pop_Variant32(__symbols);
+        // Module+ = Module+, Module => ActionFn(133);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant46(__symbols);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __end = __sym1.2;
+        let __nt = super::__action133::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        (2, 71)
     }
     pub(crate) fn __reduce162<
     >(
@@ -614750,13 +641761,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(122);
-        let __sym0 = __pop_Variant54(__symbols);
+        // ModuleStatement = Function => ActionFn(122);
+        let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action122::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce163<
     >(
@@ -614765,13 +641776,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(123);
-        let __sym0 = __pop_Variant46(__symbols);
+        // ModuleStatement = Constant => ActionFn(123);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action123::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 71)
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
     }
     pub(crate) fn __reduce164<
     >(
@@ -614780,15 +641791,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(430);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant50(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Struct => ActionFn(124);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action430::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 72)
+        (1, 72)
     }
     pub(crate) fn __reduce165<
     >(
@@ -614797,11 +641806,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(431);
-        let __sym0 = __pop_Variant18(__symbols);
+        // ModuleStatement = Module => ActionFn(125);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action431::<>(__sym0);
+        let __nt = super::__action125::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
         (1, 72)
     }
@@ -614812,15 +641821,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(50);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Modules = Module+ => ActionFn(120);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 73)
+        (1, 73)
     }
     pub(crate) fn __reduce167<
     >(
@@ -614829,16 +641836,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(393);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathExpr = Ident, PathSegments => ActionFn(434);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action393::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 73)
+        let __end = __sym1.2;
+        let __nt = super::__action434::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
     }
     pub(crate) fn __reduce168<
     >(
@@ -614847,11 +641853,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(48);
-        let __sym0 = __pop_Variant49(__symbols);
+        // PathExpr = Ident => ActionFn(435);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action435::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
         (1, 74)
     }
@@ -614862,15 +641868,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(49);
+        // PathSegment = ".", Ident => ActionFn(51);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant49(__symbols);
-        let __sym0 = __pop_Variant50(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 74)
+        let __nt = super::__action51::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (2, 75)
     }
     pub(crate) fn __reduce170<
     >(
@@ -614879,13 +641885,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(160);
-        let __sym0 = __pop_Variant50(__symbols);
+        // PathSegment = "[", Expression, "]" => ActionFn(397);
+        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 = __sym0.2;
-        let __nt = super::__action160::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action397::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 75)
+        (3, 75)
     }
     pub(crate) fn __reduce171<
     >(
@@ -614894,12 +641903,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(161);
-        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);
-        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 75)
+        // PathSegments = PathSegment => ActionFn(49);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
     }
     pub(crate) fn __reduce172<
     >(
@@ -614908,13 +641918,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(414);
+        // PathSegments = PathSegments, PathSegment => ActionFn(50);
         assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant51(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action414::<>(__sym0, __sym1);
+        let __nt = super::__action50::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
         (2, 76)
     }
@@ -614925,13 +641935,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(415);
-        let __sym0 = __pop_Variant0(__symbols);
+        // PathSegments? = PathSegments => ActionFn(164);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action415::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 76)
+        let __nt = super::__action164::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
     }
     pub(crate) fn __reduce174<
     >(
@@ -614940,13 +641950,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(53);
-        let __sym0 = __pop_Variant39(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action53::<>(__sym0);
+        // PathSegments? =  => ActionFn(165);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action165::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        (0, 77)
     }
     pub(crate) fn __reduce175<
     >(
@@ -614955,13 +641964,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(54);
-        let __sym0 = __pop_Variant62(__symbols);
+        // ReturnStmt = "return", Expression => ActionFn(418);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action54::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __end = __sym1.2;
+        let __nt = super::__action418::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
     }
     pub(crate) fn __reduce176<
     >(
@@ -614970,13 +641981,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(55);
-        let __sym0 = __pop_Variant36(__symbols);
+        // ReturnStmt = "return" => ActionFn(419);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action55::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 77)
+        let __nt = super::__action419::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
     }
     pub(crate) fn __reduce177<
     >(
@@ -614985,15 +641996,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(56);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant41(__symbols);
+        // Statement = IfStmt => ActionFn(54);
+        let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action56::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action54::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce178<
     >(
@@ -615002,15 +642011,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(57);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant26(__symbols);
+        // Statement = WhileStmt => ActionFn(55);
+        let __sym0 = __pop_Variant64(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action57::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action55::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce179<
     >(
@@ -615019,15 +642026,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(58);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Statement = ForStmt => ActionFn(56);
+        let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action58::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __end = __sym0.2;
+        let __nt = super::__action56::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
     }
     pub(crate) fn __reduce180<
     >(
@@ -615036,15 +642041,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(59);
+        // Statement = LetStmt, ";" => ActionFn(57);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant52(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action59::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (2, 77)
+        let __nt = super::__action57::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
     }
     pub(crate) fn __reduce181<
     >(
@@ -615053,7 +642058,58 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(395);
+        // Statement = AssignStmt, ";" => ActionFn(58);
+        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::__action58::<>(__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 = FnCallExpr, ";" => ActionFn(59);
+        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::__action59::<>(__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 = ReturnStmt, ";" => ActionFn(60);
+        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::__action60::<>(__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)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(399);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -615065,62 +642121,9 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action395::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (8, 78)
-    }
-    pub(crate) fn __reduce182<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(396);
-        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::__action396::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (5, 78)
-    }
-    pub(crate) fn __reduce183<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField = Ident, ":", Type => ActionFn(397);
-        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::__action397::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 79)
-    }
-    pub(crate) fn __reduce184<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // StructField? = StructField => ActionFn(189);
-        let __sym0 = __pop_Variant20(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action189::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 80)
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
     }
     pub(crate) fn __reduce185<
     >(
@@ -615129,12 +642132,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => 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::Variant55(__nt), __end));
-        (0, 80)
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(400);
+        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::__action400::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
     }
     pub(crate) fn __reduce186<
     >(
@@ -615143,17 +642152,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(398);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant31(__symbols);
+        // StructField = Ident, ":", Type => ActionFn(401);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym3.2;
-        let __nt = super::__action398::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (4, 81)
+        let __end = __sym2.2;
+        let __nt = super::__action401::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
     }
     pub(crate) fn __reduce187<
     >(
@@ -615162,16 +642170,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(399);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant14(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // StructField? = StructField => ActionFn(193);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
     }
     pub(crate) fn __reduce188<
     >(
@@ -615180,16 +642185,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(400);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant56(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action400::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 82)
+        // StructField? =  => 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::Variant57(__nt), __end));
+        (0, 82)
     }
     pub(crate) fn __reduce189<
     >(
@@ -615198,13 +642199,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(179);
-        let __sym0 = __pop_Variant22(__symbols);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(402);
+        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 = __sym0.2;
-        let __nt = super::__action179::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 83)
+        let __end = __sym3.2;
+        let __nt = super::__action402::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
     }
     pub(crate) fn __reduce190<
     >(
@@ -615213,12 +642218,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(180);
-        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
-        let __end = __start.clone();
-        let __nt = super::__action180::<>(&__start, &__end);
-        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 83)
+        // StructInitField = Ident, ":", Expression => ActionFn(403);
+        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::__action403::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
     }
     pub(crate) fn __reduce191<
     >(
@@ -615227,15 +642236,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(73);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(404);
         assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant14(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        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::__action73::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action404::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (3, 84)
     }
     pub(crate) fn __reduce192<
@@ -615245,13 +642254,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(74);
-        let __sym0 = __pop_Variant14(__symbols);
+        // StructInitField? = StructInitField => ActionFn(183);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action74::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 84)
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
     }
     pub(crate) fn __reduce193<
     >(
@@ -615260,13 +642269,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(70);
-        let __sym0 = __pop_Variant61(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action70::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        // StructInitField? =  => ActionFn(184);
+        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);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
     }
     pub(crate) fn __reduce194<
     >(
@@ -615275,13 +642283,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(71);
-        let __sym0 = __pop_Variant34(__symbols);
+        // Term = "(", Expression, ")" => ActionFn(74);
+        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 = __sym0.2;
-        let __nt = super::__action71::<>(__sym0);
+        let __end = __sym2.2;
+        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (3, 86)
     }
     pub(crate) fn __reduce195<
     >(
@@ -615290,16 +642301,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(72);
-        assert!(__symbols.len() >= 3);
-        let __sym2 = __pop_Variant0(__symbols);
-        let __sym1 = __pop_Variant56(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Term = Term0 => ActionFn(75);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
-        let __end = __sym2.2;
-        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        let __end = __sym0.2;
+        let __nt = super::__action75::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (1, 86)
     }
     pub(crate) fn __reduce196<
     >(
@@ -615308,13 +642316,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(444);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = ValueExpr => ActionFn(71);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action444::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 86)
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce197<
     >(
@@ -615323,15 +642331,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident => ActionFn(445);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant18(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
+        // Term0 = FnCallExpr => ActionFn(72);
+        let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action445::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 86)
+        let __end = __sym0.2;
+        let __nt = super::__action72::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
     }
     pub(crate) fn __reduce198<
     >(
@@ -615340,17 +642346,16 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(446);
-        assert!(__symbols.len() >= 4);
-        let __sym3 = __pop_Variant0(__symbols);
-        let __sym2 = __pop_Variant8(__symbols);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(73);
+        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 = __sym3.2;
-        let __nt = super::__action446::<>(__sym0, __sym1, __sym2, __sym3);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 86)
+        let __end = __sym2.2;
+        let __nt = super::__action73::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
     }
     pub(crate) fn __reduce199<
     >(
@@ -615359,18 +642364,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(447);
-        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_Variant59(__symbols);
+        // Type = Ident => ActionFn(448);
+        let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
-        let __end = __sym4.2;
-        let __nt = super::__action447::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __end = __sym0.2;
+        let __nt = super::__action448::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 86)
+        (1, 88)
     }
     pub(crate) fn __reduce200<
     >(
@@ -615379,13 +642379,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(169);
-        let __sym0 = __pop_Variant6(__symbols);
+        // Type = TypeQualifier+, Ident => ActionFn(449);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action169::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 87)
+        let __end = __sym1.2;
+        let __nt = super::__action449::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
     }
     pub(crate) fn __reduce201<
     >(
@@ -615394,12 +642396,17 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => 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::Variant7(__nt), __end));
-        (0, 87)
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(450);
+        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::__action450::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
     }
     pub(crate) fn __reduce202<
     >(
@@ -615408,13 +642415,18 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&" => ActionFn(39);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type = TypeQualifier+, Ident, "<", Comma<Type>, ">" => ActionFn(451);
+        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_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action39::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 88)
+        let __end = __sym4.2;
+        let __nt = super::__action451::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
     }
     pub(crate) fn __reduce203<
     >(
@@ -615423,15 +642435,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "&", "mut" => ActionFn(40);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // Type? = Type => ActionFn(173);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action40::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
     }
     pub(crate) fn __reduce204<
     >(
@@ -615440,15 +642450,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "const" => ActionFn(41);
-        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::__action41::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        // Type? =  => ActionFn(174);
+        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);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
     }
     pub(crate) fn __reduce205<
     >(
@@ -615457,15 +642464,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier = "*", "mut" => ActionFn(42);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier = "&" => ActionFn(40);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (2, 88)
+        let __end = __sym0.2;
+        let __nt = super::__action40::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
     }
     pub(crate) fn __reduce206<
     >(
@@ -615474,12 +642479,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* =  => 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::Variant59(__nt), __end));
-        (0, 89)
+        // TypeQualifier = "&", "mut" => ActionFn(41);
+        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::__action41::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce207<
     >(
@@ -615488,13 +642496,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier* = TypeQualifier+ => ActionFn(164);
-        let __sym0 = __pop_Variant59(__symbols);
+        // TypeQualifier = "*", "const" => ActionFn(42);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action164::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 89)
+        let __end = __sym1.2;
+        let __nt = super::__action42::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce208<
     >(
@@ -615503,13 +642513,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier => ActionFn(167);
-        let __sym0 = __pop_Variant58(__symbols);
+        // TypeQualifier = "*", "mut" => ActionFn(43);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action167::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 90)
+        let __end = __sym1.2;
+        let __nt = super::__action43::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (2, 90)
     }
     pub(crate) fn __reduce209<
     >(
@@ -615518,15 +642530,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(168);
-        assert!(__symbols.len() >= 2);
-        let __sym1 = __pop_Variant58(__symbols);
-        let __sym0 = __pop_Variant59(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym1.2;
-        let __nt = super::__action168::<>(__sym0, __sym1);
-        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (2, 90)
+        // TypeQualifier* =  => 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::Variant61(__nt), __end));
+        (0, 91)
     }
     pub(crate) fn __reduce210<
     >(
@@ -615535,12 +642544,12 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(403);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier* = TypeQualifier+ => ActionFn(168);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
         (1, 91)
     }
     pub(crate) fn __reduce211<
@@ -615550,13 +642559,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(404);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier => ActionFn(171);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action404::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 92)
     }
     pub(crate) fn __reduce212<
     >(
@@ -615565,13 +642574,15 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(405);
-        let __sym0 = __pop_Variant0(__symbols);
+        // TypeQualifier+ = TypeQualifier+, TypeQualifier => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action405::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 91)
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (2, 92)
     }
     pub(crate) fn __reduce213<
     >(
@@ -615580,13 +642591,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(406);
-        let __sym0 = __pop_Variant3(__symbols);
+        // UnaryOp = "-" => ActionFn(407);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action407::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce214<
     >(
@@ -615595,13 +642606,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(407);
-        let __sym0 = __pop_Variant1(__symbols);
+        // UnaryOp = "!" => ActionFn(408);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action408::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce215<
     >(
@@ -615610,13 +642621,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(408);
-        let __sym0 = __pop_Variant2(__symbols);
+        // UnaryOp = "~" => ActionFn(409);
+        let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action408::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 93)
     }
     pub(crate) fn __reduce216<
     >(
@@ -615625,13 +642636,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(109);
-        let __sym0 = __pop_Variant48(__symbols);
+        // ValueExpr = "integer" => ActionFn(410);
+        let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action109::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 92)
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
     }
     pub(crate) fn __reduce217<
     >(
@@ -615640,18 +642651,63 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(409);
+        // ValueExpr = "boolean" => ActionFn(411);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action411::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(412);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action412::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(110);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action110::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(413);
         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::__action409::<>(__sym0, __sym1, __sym2);
-        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 93)
+        let __nt = super::__action413::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant64(__nt), __end));
+        (3, 95)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615664,9 +642720,9 @@
         let __end = __sym0.2;
         let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 94)
+        (1, 96)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615679,9 +642735,9 @@
         let __end = __sym0.2;
         let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 97)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615694,9 +642750,9 @@
         let __end = __sym0.2;
         let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 96)
+        (1, 98)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615709,9 +642765,9 @@
         let __end = __sym0.2;
         let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 97)
+        (1, 99)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615724,9 +642780,9 @@
         let __end = __sym0.2;
         let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 98)
+        (1, 100)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615739,9 +642795,9 @@
         let __end = __sym0.2;
         let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 99)
+        (1, 101)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615754,9 +642810,9 @@
         let __end = __sym0.2;
         let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 102)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615769,9 +642825,9 @@
         let __end = __sym0.2;
         let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 103)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615784,9 +642840,9 @@
         let __end = __sym0.2;
         let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 104)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615799,9 +642855,9 @@
         let __end = __sym0.2;
         let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 103)
+        (1, 105)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615814,9 +642870,9 @@
         let __end = __sym0.2;
         let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 104)
+        (1, 106)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615829,9 +642885,9 @@
         let __end = __sym0.2;
         let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 105)
+        (1, 107)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615844,9 +642900,9 @@
         let __end = __sym0.2;
         let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 106)
+        (1, 108)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615859,9 +642915,9 @@
         let __end = __sym0.2;
         let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 107)
+        (1, 109)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615874,9 +642930,9 @@
         let __end = __sym0.2;
         let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615889,9 +642945,9 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615904,9 +642960,9 @@
         let __end = __sym0.2;
         let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615919,9 +642975,9 @@
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615934,9 +642990,9 @@
         let __end = __sym0.2;
         let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -615949,53 +643005,8 @@
         let __end = __sym0.2;
         let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 113)
-    }
-    pub(crate) fn __reduce238<
-    >(
-        __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, 114)
-    }
-    pub(crate) fn __reduce239<
-    >(
-        __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, 115)
     }
-    pub(crate) fn __reduce240<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __PathExpr = PathExpr => ActionFn(4);
-        let __sym0 = __pop_Variant48(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 116)
-    }
     pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
@@ -616003,13 +643014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(6);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __Module = Module => ActionFn(37);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 117)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 116)
     }
     pub(crate) fn __reduce242<
     >(
@@ -616018,13 +643029,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(5);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(38);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 118)
+        let __nt = super::__action38::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 117)
     }
     pub(crate) fn __reduce243<
     >(
@@ -616033,13 +643044,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(12);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __Modules = Modules => ActionFn(36);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 119)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 118)
     }
     pub(crate) fn __reduce244<
     >(
@@ -616048,13 +643059,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(8);
-        let __sym0 = __pop_Variant53(__symbols);
+        // __PathExpr = PathExpr => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 120)
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 119)
     }
     pub(crate) fn __reduce245<
     >(
@@ -616063,15 +643074,75 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(34);
+        // __PathSegment = PathSegment => ActionFn(6);
+        let __sym0 = __pop_Variant51(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(5);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(12);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 121)
+        (1, 122)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(8);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __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, 124)
+    }
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -616084,9 +643155,9 @@
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 122)
+        (1, 125)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -616094,14 +643165,14 @@
     ) -> (usize, usize)
     {
         // __StructInitExpr = StructInitExpr => ActionFn(29);
-        let __sym0 = __pop_Variant56(__symbols);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action29::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 123)
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 126)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce252<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -616114,9 +643185,9 @@
         let __end = __sym0.2;
         let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 124)
+        (1, 127)
     }
-    pub(crate) fn __reduce249<
+    pub(crate) fn __reduce253<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -616129,9 +643200,9 @@
         let __end = __sym0.2;
         let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 125)
+        (1, 128)
     }
-    pub(crate) fn __reduce250<
+    pub(crate) fn __reduce254<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -616144,9 +643215,9 @@
         let __end = __sym0.2;
         let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 126)
+        (1, 129)
     }
-    pub(crate) fn __reduce251<
+    pub(crate) fn __reduce255<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -616159,9 +643230,9 @@
         let __end = __sym0.2;
         let __nt = super::__action2::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 127)
+        (1, 130)
     }
-    pub(crate) fn __reduce252<
+    pub(crate) fn __reduce256<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -616169,14 +643240,14 @@
     ) -> (usize, usize)
     {
         // __TypeQualifier = TypeQualifier => ActionFn(1);
-        let __sym0 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 128)
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 131)
     }
-    pub(crate) fn __reduce253<
+    pub(crate) fn __reduce257<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -616184,14 +643255,14 @@
     ) -> (usize, usize)
     {
         // __UnaryOp = UnaryOp => ActionFn(26);
-        let __sym0 = __pop_Variant60(__symbols);
+        let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 129)
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 132)
     }
-    pub(crate) fn __reduce254<
+    pub(crate) fn __reduce258<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -616199,12 +643270,12 @@
     ) -> (usize, usize)
     {
         // __ValueExpr = ValueExpr => ActionFn(27);
-        let __sym0 = __pop_Variant61(__symbols);
+        let __sym0 = __pop_Variant63(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 130)
+        __symbols.push((__start, __Symbol::Variant63(__nt), __end));
+        (1, 133)
     }
 }
 pub(crate) use self::__parse__WhileStmt::WhileStmtParser;
@@ -616535,6 +643606,15 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action36<
+>(
+    (_, __0, _): (usize, Vec<ast::Module>, usize),
+) -> Vec<ast::Module>
+{
+    __0
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action37<
 >(
     (_, __0, _): (usize, ast::Module, usize),
 ) -> ast::Module
@@ -616543,7 +643623,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action37<
+fn __action38<
 >(
     (_, __0, _): (usize, ast::ModuleStatement, usize),
 ) -> ast::ModuleStatement
@@ -616552,7 +643632,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action38<
+fn __action39<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, String, usize),
@@ -616566,7 +643646,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action39<
+fn __action40<
 >(
     (_, __0, _): (usize, Token, usize),
 ) -> ast::TypeQualifier
@@ -616574,16 +643654,6 @@
     ast::TypeQualifier::Ref
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action40<
->(
-    (_, __0, _): (usize, Token, usize),
-    (_, __1, _): (usize, Token, usize),
-) -> ast::TypeQualifier
-{
-    ast::TypeQualifier::RefMut
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action41<
 >(
@@ -616591,7 +643661,7 @@
     (_, __1, _): (usize, Token, usize),
 ) -> ast::TypeQualifier
 {
-    ast::TypeQualifier::Ptr
+    ast::TypeQualifier::RefMut
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -616601,11 +643671,21 @@
     (_, __1, _): (usize, Token, usize),
 ) -> ast::TypeQualifier
 {
-    ast::TypeQualifier::PtrMut
+    ast::TypeQualifier::Ptr
 }
 
 #[allow(clippy::too_many_arguments)]
 fn __action43<
+>(
+    (_, __0, _): (usize, Token, usize),
+    (_, __1, _): (usize, Token, usize),
+) -> ast::TypeQualifier
+{
+    ast::TypeQualifier::PtrMut
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action44<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, qualifiers, _): (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
@@ -616621,28 +643701,28 @@
     }
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action44<
->(
-    (_, lo, _): (usize, usize, usize),
-    (_, qualifiers, _): (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
-    (_, name, _): (usize, ast::Ident, usize),
-    (_, _, _): (usize, Token, usize),
-    (_, generics, _): (usize, Vec<ast::Type>, usize),
-    (_, _, _): (usize, Token, usize),
-    (_, hi, _): (usize, usize, usize),
-) -> ast::Type
-{
-    ast::Type {
-        name,
-        generics,
-        qualifiers,
-        span: ast::Span::new(lo, hi),
-    }
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action45<
+>(
+    (_, lo, _): (usize, usize, usize),
+    (_, qualifiers, _): (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
+    (_, name, _): (usize, ast::Ident, usize),
+    (_, _, _): (usize, Token, usize),
+    (_, generics, _): (usize, Vec<ast::Type>, usize),
+    (_, _, _): (usize, Token, usize),
+    (_, hi, _): (usize, usize, usize),
+) -> ast::Type
+{
+    ast::Type {
+        name,
+        generics,
+        qualifiers,
+        span: ast::Span::new(lo, hi),
+    }
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action46<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -616658,7 +643738,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action46<
+fn __action47<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -616678,7 +643758,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action47<
+fn __action48<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, first, _): (usize, ast::Ident, usize),
@@ -616694,7 +643774,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action48<
+fn __action49<
 >(
     (_, __0, _): (usize, ast::PathSegment, usize),
 ) -> Vec<ast::PathSegment>
@@ -616703,7 +643783,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action49<
+fn __action50<
 >(
     (_, mut s, _): (usize, Vec<ast::PathSegment>, usize),
     (_, n, _): (usize, ast::PathSegment, usize),
@@ -616716,7 +643796,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action50<
+fn __action51<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Ident, usize),
@@ -616726,7 +643806,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action51<
+fn __action52<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -616742,7 +643822,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action52<
+fn __action53<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -616758,7 +643838,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action53<
+fn __action54<
 >(
     (_, __0, _): (usize, ast::IfStmt, usize),
 ) -> ast::Statement
@@ -616767,7 +643847,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action54<
+fn __action55<
 >(
     (_, __0, _): (usize, ast::WhileStmt, usize),
 ) -> ast::Statement
@@ -616776,7 +643856,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action55<
+fn __action56<
 >(
     (_, __0, _): (usize, ast::ForStmt, usize),
 ) -> ast::Statement
@@ -616785,7 +643865,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action56<
+fn __action57<
 >(
     (_, __0, _): (usize, ast::LetStmt, usize),
     (_, _, _): (usize, Token, usize),
@@ -616795,7 +643875,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action57<
+fn __action58<
 >(
     (_, __0, _): (usize, ast::AssignStmt, usize),
     (_, _, _): (usize, Token, usize),
@@ -616805,7 +643885,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action58<
+fn __action59<
 >(
     (_, __0, _): (usize, ast::FnCallExpr, usize),
     (_, _, _): (usize, Token, usize),
@@ -616815,7 +643895,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action59<
+fn __action60<
 >(
     (_, __0, _): (usize, ast::ReturnStmt, usize),
     (_, _, _): (usize, Token, usize),
@@ -616825,7 +643905,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action60<
+fn __action61<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -616843,7 +643923,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action61<
+fn __action62<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -616866,7 +643946,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action62<
+fn __action63<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -616888,27 +643968,27 @@
   }
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action63<
->(
-    (_, lo, _): (usize, usize, usize),
-    (_, deref, _): (usize, alloc::vec::Vec<Token>, usize),
-    (_, name, _): (usize, ast::PathExpr, usize),
-    (_, _, _): (usize, Token, usize),
-    (_, value, _): (usize, ast::Expression, usize),
-    (_, hi, _): (usize, usize, usize),
-) -> ast::AssignStmt
-{
-    ast::AssignStmt {
-    name,
-    value,
-    deref_times: deref.len(),
-    span: ast::Span::new(lo, hi),
-  }
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action64<
+>(
+    (_, lo, _): (usize, usize, usize),
+    (_, deref, _): (usize, alloc::vec::Vec<Token>, usize),
+    (_, name, _): (usize, ast::PathExpr, usize),
+    (_, _, _): (usize, Token, usize),
+    (_, value, _): (usize, ast::Expression, usize),
+    (_, hi, _): (usize, usize, usize),
+) -> ast::AssignStmt
+{
+    ast::AssignStmt {
+    name,
+    value,
+    deref_times: deref.len(),
+    span: ast::Span::new(lo, hi),
+  }
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action65<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, deref, _): (usize, alloc::vec::Vec<Token>, usize),
@@ -616927,7 +644007,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action65<
+fn __action66<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -616942,7 +644022,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action66<
+fn __action67<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -616961,7 +644041,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action67<
+fn __action68<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -616982,7 +644062,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action68<
+fn __action69<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -617005,7 +644085,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action69<
+fn __action70<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -617026,7 +644106,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action70<
+fn __action71<
 >(
     (_, __0, _): (usize, ast::ValueExpr, usize),
 ) -> ast::Expression
@@ -617035,7 +644115,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action71<
+fn __action72<
 >(
     (_, __0, _): (usize, ast::FnCallExpr, usize),
 ) -> ast::Expression
@@ -617044,7 +644124,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action72<
+fn __action73<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::StructInitExpr, usize),
@@ -617054,21 +644134,12 @@
     ast::Expression::StructInit(__0)
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action73<
->(
-    (_, _, _): (usize, Token, usize),
-    (_, __0, _): (usize, ast::Expression, usize),
-    (_, _, _): (usize, Token, usize),
-) -> ast::Expression
-{
-    __0
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action74<
 >(
+    (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Expression, usize),
+    (_, _, _): (usize, Token, usize),
 ) -> ast::Expression
 {
     __0
@@ -617085,6 +644156,15 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action76<
+>(
+    (_, __0, _): (usize, ast::Expression, usize),
+) -> ast::Expression
+{
+    __0
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action77<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -617097,7 +644177,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action77<
+fn __action78<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -617109,7 +644189,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action78<
+fn __action79<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -617121,7 +644201,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action79<
+fn __action80<
 >(
     (_, op, _): (usize, ast::UnaryOp, usize),
     (_, rhs, _): (usize, ast::Expression, usize),
@@ -617134,7 +644214,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action80<
+fn __action81<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -617142,47 +644222,47 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action81<
->(
-    (_, lhs, _): (usize, ast::Expression, usize),
-    (_, op, _): (usize, ast::BinaryOp, usize),
-    (_, rhs, _): (usize, ast::Expression, usize),
-) -> ast::Expression
-{
-    ast::Expression::Binary(
-    Box::new(lhs),
-    op,
-    Box::new(rhs)
-  )
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action82<
 >(
-    (_, __0, _): (usize, ast::Expression, usize),
+    (_, lhs, _): (usize, ast::Expression, usize),
+    (_, op, _): (usize, ast::BinaryOp, usize),
+    (_, rhs, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
-    __0
+    ast::Expression::Binary(
+    Box::new(lhs),
+    op,
+    Box::new(rhs)
+  )
 }
 
 #[allow(clippy::too_many_arguments)]
 fn __action83<
 >(
-    (_, lhs, _): (usize, ast::Expression, usize),
-    (_, op, _): (usize, ast::BinaryOp, usize),
-    (_, rhs, _): (usize, ast::Expression, usize),
+    (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
 {
-    ast::Expression::Binary(
-    Box::new(lhs),
-    op,
-    Box::new(rhs)
-  )
+    __0
 }
 
 #[allow(clippy::too_many_arguments)]
 fn __action84<
+>(
+    (_, lhs, _): (usize, ast::Expression, usize),
+    (_, op, _): (usize, ast::BinaryOp, usize),
+    (_, rhs, _): (usize, ast::Expression, usize),
+) -> ast::Expression
+{
+    ast::Expression::Binary(
+    Box::new(lhs),
+    op,
+    Box::new(rhs)
+  )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action85<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -617191,7 +644271,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action85<
+fn __action86<
 >(
     (_, lhs, _): (usize, ast::Expression, usize),
     (_, op, _): (usize, ast::BinaryOp, usize),
@@ -617206,7 +644286,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action86<
+fn __action87<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -617214,17 +644294,6 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action87<
->(
-    (_, lo, _): (usize, usize, usize),
-    (_, _, _): (usize, Token, usize),
-    (_, hi, _): (usize, usize, usize),
-) -> ast::BinaryOp
-{
-    ast::BinaryOp::Compare(ast::CmpOp::Eq, ast::Span::new(hi, lo))
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action88<
 >(
@@ -617233,7 +644302,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Compare(ast::CmpOp::NotEq, ast::Span::new(hi, lo))
+    ast::BinaryOp::Compare(ast::CmpOp::Eq, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617244,7 +644313,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Compare(ast::CmpOp::Lt, ast::Span::new(hi, lo))
+    ast::BinaryOp::Compare(ast::CmpOp::NotEq, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617255,7 +644324,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Compare(ast::CmpOp::Gt, ast::Span::new(hi, lo))
+    ast::BinaryOp::Compare(ast::CmpOp::Lt, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617266,7 +644335,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Compare(ast::CmpOp::LtEq, ast::Span::new(hi, lo))
+    ast::BinaryOp::Compare(ast::CmpOp::Gt, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617277,7 +644346,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Compare(ast::CmpOp::GtEq, ast::Span::new(hi, lo))
+    ast::BinaryOp::Compare(ast::CmpOp::LtEq, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617288,7 +644357,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Logic(ast::LogicOp::And, ast::Span::new(hi, lo))
+    ast::BinaryOp::Compare(ast::CmpOp::GtEq, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617299,7 +644368,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Logic(ast::LogicOp::Or, ast::Span::new(hi, lo))
+    ast::BinaryOp::Logic(ast::LogicOp::And, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617310,7 +644379,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Arith(ast::ArithOp::Div, ast::Span::new(hi, lo))
+    ast::BinaryOp::Logic(ast::LogicOp::Or, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617321,7 +644390,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Arith(ast::ArithOp::Mul, ast::Span::new(hi, lo))
+    ast::BinaryOp::Arith(ast::ArithOp::Div, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617332,7 +644401,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Arith(ast::ArithOp::Mod, ast::Span::new(hi, lo))
+    ast::BinaryOp::Arith(ast::ArithOp::Mul, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617343,7 +644412,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Arith(ast::ArithOp::Add, ast::Span::new(hi, lo))
+    ast::BinaryOp::Arith(ast::ArithOp::Mod, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617354,7 +644423,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Arith(ast::ArithOp::Sub, ast::Span::new(hi, lo))
+    ast::BinaryOp::Arith(ast::ArithOp::Add, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617365,7 +644434,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Bitwise(ast::BitwiseOp::And, ast::Span::new(hi, lo))
+    ast::BinaryOp::Arith(ast::ArithOp::Sub, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617376,7 +644445,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Bitwise(ast::BitwiseOp::Or, ast::Span::new(hi, lo))
+    ast::BinaryOp::Bitwise(ast::BitwiseOp::And, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617387,7 +644456,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::BinaryOp
 {
-    ast::BinaryOp::Bitwise(ast::BitwiseOp::Xor, ast::Span::new(hi, lo))
+    ast::BinaryOp::Bitwise(ast::BitwiseOp::Or, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617396,9 +644465,9 @@
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
     (_, hi, _): (usize, usize, usize),
-) -> ast::UnaryOp
+) -> ast::BinaryOp
 {
-    ast::UnaryOp::ArithNeg(ast::Span::new(hi, lo))
+    ast::BinaryOp::Bitwise(ast::BitwiseOp::Xor, ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617409,7 +644478,7 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::UnaryOp
 {
-    ast::UnaryOp::LogicalNot(ast::Span::new(hi, lo))
+    ast::UnaryOp::ArithNeg(ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
@@ -617420,11 +644489,22 @@
     (_, hi, _): (usize, usize, usize),
 ) -> ast::UnaryOp
 {
-    ast::UnaryOp::BitwiseNot(ast::Span::new(hi, lo))
+    ast::UnaryOp::LogicalNot(ast::Span::new(hi, lo))
 }
 
 #[allow(clippy::too_many_arguments)]
 fn __action106<
+>(
+    (_, lo, _): (usize, usize, usize),
+    (_, _, _): (usize, Token, usize),
+    (_, hi, _): (usize, usize, usize),
+) -> ast::UnaryOp
+{
+    ast::UnaryOp::BitwiseNot(ast::Span::new(hi, lo))
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action107<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, value, _): (usize, u128, usize),
@@ -617438,7 +644518,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action107<
+fn __action108<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, value, _): (usize, bool, usize),
@@ -617452,7 +644532,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action108<
+fn __action109<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, value, _): (usize, String, usize),
@@ -617466,7 +644546,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action109<
+fn __action110<
 >(
     (_, __0, _): (usize, ast::PathExpr, usize),
 ) -> ast::ValueExpr
@@ -617475,7 +644555,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action110<
+fn __action111<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -617491,7 +644571,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action111<
+fn __action112<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -617507,7 +644587,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action112<
+fn __action113<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Type, usize),
@@ -617525,7 +644605,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action113<
+fn __action114<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -617542,7 +644622,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action114<
+fn __action115<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, is_public, _): (usize, core::option::Option<Token>, usize),
@@ -617569,7 +644649,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action115<
+fn __action116<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -617591,7 +644671,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action116<
+fn __action117<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -617608,7 +644688,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action117<
+fn __action118<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -617629,7 +644709,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action118<
+fn __action119<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -617647,7 +644727,16 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action119<
+fn __action120<
+>(
+    (_, __0, _): (usize, alloc::vec::Vec<ast::Module>, usize),
+) -> Vec<ast::Module>
+{
+    __0
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action121<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -617668,7 +644757,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action120<
+fn __action122<
 >(
     (_, __0, _): (usize, ast::Function, usize),
 ) -> ast::ModuleStatement
@@ -617677,7 +644766,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action121<
+fn __action123<
 >(
     (_, __0, _): (usize, ast::Constant, usize),
 ) -> ast::ModuleStatement
@@ -617686,7 +644775,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action122<
+fn __action124<
 >(
     (_, __0, _): (usize, ast::Struct, usize),
 ) -> ast::ModuleStatement
@@ -617695,7 +644784,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action123<
+fn __action125<
 >(
     (_, __0, _): (usize, ast::Module, usize),
 ) -> ast::ModuleStatement
@@ -617704,7 +644793,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action124<
+fn __action126<
 >(
     (_, __0, _): (usize, ast::ModuleStatement, usize),
 ) -> Vec<ast::ModuleStatement>
@@ -617713,7 +644802,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action125<
+fn __action127<
 >(
     (_, mut s, _): (usize, Vec<ast::ModuleStatement>, usize),
     (_, n, _): (usize, ast::ModuleStatement, usize),
@@ -617726,7 +644815,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action126<
+fn __action128<
 >(
     (_, __0, _): (usize, Vec<ast::Import>, usize),
 ) -> core::option::Option<Vec<ast::Import>>
@@ -617735,7 +644824,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action127<
+fn __action129<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -617745,7 +644834,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action128<
+fn __action130<
 >(
     (_, __0, _): (usize, ast::Import, usize),
 ) -> Vec<ast::Import>
@@ -617754,7 +644843,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action129<
+fn __action131<
 >(
     (_, mut s, _): (usize, Vec<ast::Import>, usize),
     (_, n, _): (usize, ast::Import, usize),
@@ -617767,7 +644856,26 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action130<
+fn __action132<
+>(
+    (_, __0, _): (usize, ast::Module, usize),
+) -> alloc::vec::Vec<ast::Module>
+{
+    alloc::vec![__0]
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action133<
+>(
+    (_, v, _): (usize, alloc::vec::Vec<ast::Module>, usize),
+    (_, e, _): (usize, ast::Module, usize),
+) -> alloc::vec::Vec<ast::Module>
+{
+    { let mut v = v; v.push(e); v }
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action134<
 >(
     (_, __0, _): (usize, Vec<ast::Ident>, usize),
 ) -> core::option::Option<Vec<ast::Ident>>
@@ -617776,7 +644884,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action131<
+fn __action135<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -617786,7 +644894,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action132<
+fn __action136<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, Vec<ast::Ident>, usize),
@@ -617797,7 +644905,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action133<
+fn __action137<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, core::option::Option<ast::Ident>, usize),
@@ -617813,7 +644921,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action134<
+fn __action138<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, core::option::Option<ast::Ident>, usize),
@@ -617829,7 +644937,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action135<
+fn __action139<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::StructField>, usize),
     (_, e, _): (usize, core::option::Option<ast::StructField>, usize),
@@ -617845,7 +644953,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action136<
+fn __action140<
 >(
     (_, __0, _): (usize, Vec<ast::Type>, usize),
 ) -> core::option::Option<Vec<ast::Type>>
@@ -617854,7 +644962,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action137<
+fn __action141<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -617864,7 +644972,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action138<
+fn __action142<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, Vec<ast::Type>, usize),
@@ -617875,7 +644983,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action139<
+fn __action143<
 >(
     (_, __0, _): (usize, ast::Type, usize),
 ) -> core::option::Option<ast::Type>
@@ -617884,7 +644992,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action140<
+fn __action144<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -617894,7 +645002,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action141<
+fn __action145<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Type, usize),
@@ -617904,7 +645012,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action142<
+fn __action146<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::FnParam>, usize),
     (_, e, _): (usize, core::option::Option<ast::FnParam>, usize),
@@ -617919,46 +645027,46 @@
     }
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action143<
->(
-    (_, __0, _): (usize, Token, usize),
-) -> core::option::Option<Token>
-{
-    Some(__0)
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action144<
->(
-    __lookbehind: &usize,
-    __lookahead: &usize,
-) -> core::option::Option<Token>
-{
-    None
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action145<
->(
-    (_, __0, _): (usize, Token, usize),
-) -> core::option::Option<Token>
-{
-    Some(__0)
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action146<
->(
-    __lookbehind: &usize,
-    __lookahead: &usize,
-) -> core::option::Option<Token>
-{
-    None
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action147<
+>(
+    (_, __0, _): (usize, Token, usize),
+) -> core::option::Option<Token>
+{
+    Some(__0)
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action148<
+>(
+    __lookbehind: &usize,
+    __lookahead: &usize,
+) -> core::option::Option<Token>
+{
+    None
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action149<
+>(
+    (_, __0, _): (usize, Token, usize),
+) -> core::option::Option<Token>
+{
+    Some(__0)
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action150<
+>(
+    __lookbehind: &usize,
+    __lookahead: &usize,
+) -> core::option::Option<Token>
+{
+    None
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action151<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     (_, e, _): (usize, core::option::Option<(ast::Ident, ast::StructInitField)>, usize),
@@ -617974,7 +645082,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action148<
+fn __action152<
 >(
     (_, __0, _): (usize, ast::Block, usize),
 ) -> core::option::Option<ast::Block>
@@ -617983,7 +645091,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action149<
+fn __action153<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -617993,7 +645101,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action150<
+fn __action154<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Block, usize),
@@ -618003,7 +645111,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action151<
+fn __action155<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> core::option::Option<ast::Expression>
@@ -618011,56 +645119,56 @@
     Some(__0)
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action152<
->(
-    __lookbehind: &usize,
-    __lookahead: &usize,
-) -> core::option::Option<ast::Expression>
-{
-    None
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action153<
->(
-    __lookbehind: &usize,
-    __lookahead: &usize,
-) -> alloc::vec::Vec<Token>
-{
-    alloc::vec![]
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action154<
->(
-    (_, v, _): (usize, alloc::vec::Vec<Token>, usize),
-) -> alloc::vec::Vec<Token>
-{
-    v
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action155<
->(
-    (_, __0, _): (usize, Token, usize),
-) -> core::option::Option<Token>
-{
-    Some(__0)
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action156<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
-) -> core::option::Option<Token>
+) -> core::option::Option<ast::Expression>
 {
     None
 }
 
 #[allow(clippy::too_many_arguments)]
 fn __action157<
+>(
+    __lookbehind: &usize,
+    __lookahead: &usize,
+) -> alloc::vec::Vec<Token>
+{
+    alloc::vec![]
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action158<
+>(
+    (_, v, _): (usize, alloc::vec::Vec<Token>, usize),
+) -> alloc::vec::Vec<Token>
+{
+    v
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action159<
+>(
+    (_, __0, _): (usize, Token, usize),
+) -> core::option::Option<Token>
+{
+    Some(__0)
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action160<
+>(
+    __lookbehind: &usize,
+    __lookahead: &usize,
+) -> core::option::Option<Token>
+{
+    None
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action161<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Expression>, usize),
     (_, e, _): (usize, core::option::Option<ast::Expression>, usize),
@@ -618076,7 +645184,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action158<
+fn __action162<
 >(
     (_, __0, _): (usize, ast::Statement, usize),
 ) -> Vec<ast::Statement>
@@ -618085,7 +645193,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action159<
+fn __action163<
 >(
     (_, mut s, _): (usize, Vec<ast::Statement>, usize),
     (_, n, _): (usize, ast::Statement, usize),
@@ -618098,7 +645206,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action160<
+fn __action164<
 >(
     (_, __0, _): (usize, Vec<ast::PathSegment>, usize),
 ) -> core::option::Option<Vec<ast::PathSegment>>
@@ -618107,7 +645215,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action161<
+fn __action165<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618117,7 +645225,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action162<
+fn __action166<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Type>, usize),
     (_, e, _): (usize, core::option::Option<ast::Type>, usize),
@@ -618133,7 +645241,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action163<
+fn __action167<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618143,7 +645251,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action164<
+fn __action168<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
 ) -> alloc::vec::Vec<ast::TypeQualifier>
@@ -618151,7 +645259,7 @@
     v
 }
 
-fn __action165<
+fn __action169<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618160,7 +645268,7 @@
     *__lookbehind
 }
 
-fn __action166<
+fn __action170<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618170,7 +645278,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action167<
+fn __action171<
 >(
     (_, __0, _): (usize, ast::TypeQualifier, usize),
 ) -> alloc::vec::Vec<ast::TypeQualifier>
@@ -618179,7 +645287,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action168<
+fn __action172<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     (_, e, _): (usize, ast::TypeQualifier, usize),
@@ -618189,7 +645297,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action169<
+fn __action173<
 >(
     (_, __0, _): (usize, ast::Type, usize),
 ) -> core::option::Option<ast::Type>
@@ -618198,7 +645306,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action170<
+fn __action174<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618208,7 +645316,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action171<
+fn __action175<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618218,7 +645326,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action172<
+fn __action176<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Type>, usize),
 ) -> alloc::vec::Vec<ast::Type>
@@ -618227,7 +645335,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action173<
+fn __action177<
 >(
     (_, __0, _): (usize, ast::Type, usize),
     (_, _, _): (usize, Token, usize),
@@ -618237,7 +645345,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action174<
+fn __action178<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618247,7 +645355,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action175<
+fn __action179<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Expression>, usize),
 ) -> alloc::vec::Vec<ast::Expression>
@@ -618256,7 +645364,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action176<
+fn __action180<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
     (_, _, _): (usize, Token, usize),
@@ -618266,7 +645374,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action177<
+fn __action181<
 >(
     (_, __0, _): (usize, Token, usize),
 ) -> alloc::vec::Vec<Token>
@@ -618275,7 +645383,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action178<
+fn __action182<
 >(
     (_, v, _): (usize, alloc::vec::Vec<Token>, usize),
     (_, e, _): (usize, Token, usize),
@@ -618285,7 +645393,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action179<
+fn __action183<
 >(
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> core::option::Option<(ast::Ident, ast::StructInitField)>
@@ -618294,7 +645402,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action180<
+fn __action184<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618304,7 +645412,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action181<
+fn __action185<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618314,7 +645422,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action182<
+fn __action186<
 >(
     (_, v, _): (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
 ) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
@@ -618323,7 +645431,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action183<
+fn __action187<
 >(
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
     (_, _, _): (usize, Token, usize),
@@ -618333,7 +645441,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action184<
+fn __action188<
 >(
     (_, __0, _): (usize, ast::FnParam, usize),
 ) -> core::option::Option<ast::FnParam>
@@ -618342,7 +645450,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action185<
+fn __action189<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618352,7 +645460,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action186<
+fn __action190<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618362,7 +645470,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action187<
+fn __action191<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::FnParam>, usize),
 ) -> alloc::vec::Vec<ast::FnParam>
@@ -618371,7 +645479,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action188<
+fn __action192<
 >(
     (_, __0, _): (usize, ast::FnParam, usize),
     (_, _, _): (usize, Token, usize),
@@ -618381,7 +645489,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action189<
+fn __action193<
 >(
     (_, __0, _): (usize, ast::StructField, usize),
 ) -> core::option::Option<ast::StructField>
@@ -618390,7 +645498,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action190<
+fn __action194<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618400,7 +645508,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action191<
+fn __action195<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618410,7 +645518,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action192<
+fn __action196<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::StructField>, usize),
 ) -> alloc::vec::Vec<ast::StructField>
@@ -618419,7 +645527,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action193<
+fn __action197<
 >(
     (_, __0, _): (usize, ast::StructField, usize),
     (_, _, _): (usize, Token, usize),
@@ -618429,7 +645537,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action194<
+fn __action198<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618439,7 +645547,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action195<
+fn __action199<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> alloc::vec::Vec<ast::Ident>
@@ -618448,7 +645556,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action196<
+fn __action200<
 >(
     (_, __0, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -618458,7 +645566,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action197<
+fn __action201<
 >(
     (_, __0, _): (usize, ast::Ident, usize),
 ) -> core::option::Option<ast::Ident>
@@ -618467,7 +645575,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action198<
+fn __action202<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618477,7 +645585,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action199<
+fn __action203<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -618487,7 +645595,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action200<
+fn __action204<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> alloc::vec::Vec<ast::Ident>
@@ -618496,7 +645604,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action201<
+fn __action205<
 >(
     (_, __0, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -618505,46 +645613,46 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action202<
->(
-    (_, __0, _): (usize, ast::Ident, usize),
-) -> alloc::vec::Vec<ast::Ident>
-{
-    alloc::vec![__0]
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action203<
->(
-    (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
-    (_, e, _): (usize, ast::Ident, usize),
-) -> alloc::vec::Vec<ast::Ident>
-{
-    { let mut v = v; v.push(e); v }
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action204<
->(
-    (_, __0, _): (usize, ast::Ident, usize),
-) -> alloc::vec::Vec<ast::Ident>
-{
-    alloc::vec![__0]
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action205<
->(
-    (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
-    (_, e, _): (usize, ast::Ident, usize),
-) -> alloc::vec::Vec<ast::Ident>
-{
-    { let mut v = v; v.push(e); v }
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action206<
+>(
+    (_, __0, _): (usize, ast::Ident, usize),
+) -> alloc::vec::Vec<ast::Ident>
+{
+    alloc::vec![__0]
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action207<
+>(
+    (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
+    (_, e, _): (usize, ast::Ident, usize),
+) -> alloc::vec::Vec<ast::Ident>
+{
+    { let mut v = v; v.push(e); v }
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action208<
+>(
+    (_, __0, _): (usize, ast::Ident, usize),
+) -> alloc::vec::Vec<ast::Ident>
+{
+    alloc::vec![__0]
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action209<
+>(
+    (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
+    (_, e, _): (usize, ast::Ident, usize),
+) -> alloc::vec::Vec<ast::Ident>
+{
+    { let mut v = v; v.push(e); v }
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action210<
 >(
     (_, __0, _): (usize, ast::StructField, usize),
 ) -> alloc::vec::Vec<ast::StructField>
@@ -618553,7 +645661,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action207<
+fn __action211<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::StructField>, usize),
     (_, e, _): (usize, ast::StructField, usize),
@@ -618563,7 +645671,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action208<
+fn __action212<
 >(
     (_, __0, _): (usize, ast::FnParam, usize),
 ) -> alloc::vec::Vec<ast::FnParam>
@@ -618572,7 +645680,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action209<
+fn __action213<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::FnParam>, usize),
     (_, e, _): (usize, ast::FnParam, usize),
@@ -618582,7 +645690,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action210<
+fn __action214<
 >(
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
@@ -618591,7 +645699,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action211<
+fn __action215<
 >(
     (_, v, _): (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     (_, e, _): (usize, (ast::Ident, ast::StructInitField), usize),
@@ -618601,7 +645709,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action212<
+fn __action216<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> alloc::vec::Vec<ast::Expression>
@@ -618610,7 +645718,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action213<
+fn __action217<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Expression>, usize),
     (_, e, _): (usize, ast::Expression, usize),
@@ -618620,7 +645728,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action214<
+fn __action218<
 >(
     (_, __0, _): (usize, ast::Type, usize),
 ) -> alloc::vec::Vec<ast::Type>
@@ -618629,7 +645737,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action215<
+fn __action219<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Type>, usize),
     (_, e, _): (usize, ast::Type, usize),
@@ -618639,7 +645747,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action216<
+fn __action220<
 >(
     __0: (usize, usize, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -618650,12 +645758,12 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action153(
+    let __temp0 = __action157(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action63(
+    __action64(
         __0,
         __temp0,
         __1,
@@ -618666,7 +645774,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action217<
+fn __action221<
 >(
     __0: (usize, usize, usize),
     __1: (usize, alloc::vec::Vec<Token>, usize),
@@ -618678,11 +645786,11 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action154(
+    let __temp0 = __action158(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action63(
+    __action64(
         __0,
         __temp0,
         __2,
@@ -618693,7 +645801,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action218<
+fn __action222<
 >(
     __0: (usize, usize, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -618704,12 +645812,12 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action153(
+    let __temp0 = __action157(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action64(
+    __action65(
         __0,
         __temp0,
         __1,
@@ -618720,7 +645828,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action219<
+fn __action223<
 >(
     __0: (usize, usize, usize),
     __1: (usize, alloc::vec::Vec<Token>, usize),
@@ -618732,11 +645840,11 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action154(
+    let __temp0 = __action158(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action64(
+    __action65(
         __0,
         __temp0,
         __2,
@@ -618747,7 +645855,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action220<
+fn __action224<
 >(
     __0: (usize, usize, usize),
     __1: (usize, core::option::Option<Token>, usize),
@@ -618764,11 +645872,11 @@
 {
     let __start0 = __2.0;
     let __end0 = __2.2;
-    let __temp0 = __action143(
+    let __temp0 = __action147(
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action114(
+    __action115(
         __0,
         __1,
         __temp0,
@@ -618784,7 +645892,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action221<
+fn __action225<
 >(
     __0: (usize, usize, usize),
     __1: (usize, core::option::Option<Token>, usize),
@@ -618800,12 +645908,12 @@
 {
     let __start0 = __1.2;
     let __end0 = __2.0;
-    let __temp0 = __action144(
+    let __temp0 = __action148(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action114(
+    __action115(
         __0,
         __1,
         __temp0,
@@ -618821,7 +645929,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action222<
+fn __action226<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -618836,11 +645944,11 @@
 {
     let __start0 = __2.0;
     let __end0 = __2.2;
-    let __temp0 = __action155(
+    let __temp0 = __action159(
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action61(
+    __action62(
         __0,
         __1,
         __temp0,
@@ -618854,7 +645962,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action223<
+fn __action227<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -618868,12 +645976,12 @@
 {
     let __start0 = __1.2;
     let __end0 = __2.0;
-    let __temp0 = __action156(
+    let __temp0 = __action160(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action61(
+    __action62(
         __0,
         __1,
         __temp0,
@@ -618887,7 +645995,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action224<
+fn __action228<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -618902,11 +646010,11 @@
 {
     let __start0 = __2.0;
     let __end0 = __2.2;
-    let __temp0 = __action155(
+    let __temp0 = __action159(
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action62(
+    __action63(
         __0,
         __1,
         __temp0,
@@ -618920,7 +646028,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action225<
+fn __action229<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -618934,12 +646042,12 @@
 {
     let __start0 = __1.2;
     let __end0 = __2.0;
-    let __temp0 = __action156(
+    let __temp0 = __action160(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action62(
+    __action63(
         __0,
         __1,
         __temp0,
@@ -618953,7 +646061,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action226<
+fn __action230<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -618970,11 +646078,11 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action145(
+    let __temp0 = __action149(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action220(
+    __action224(
         __0,
         __temp0,
         __2,
@@ -618990,7 +646098,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action227<
+fn __action231<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619006,12 +646114,12 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action146(
+    let __temp0 = __action150(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action220(
+    __action224(
         __0,
         __temp0,
         __1,
@@ -619027,7 +646135,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action228<
+fn __action232<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619043,11 +646151,11 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action145(
+    let __temp0 = __action149(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action221(
+    __action225(
         __0,
         __temp0,
         __2,
@@ -619062,7 +646170,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action229<
+fn __action233<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619077,12 +646185,12 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action146(
+    let __temp0 = __action150(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action221(
+    __action225(
         __0,
         __temp0,
         __1,
@@ -619097,7 +646205,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action230<
+fn __action234<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Type, usize),
@@ -619105,18 +646213,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action141(
+    let __temp0 = __action145(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action139(
+    __action143(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action231<
+fn __action235<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619134,12 +646242,12 @@
 {
     let __start0 = __8.0;
     let __end0 = __9.2;
-    let __temp0 = __action230(
+    let __temp0 = __action234(
         __8,
         __9,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action226(
+    __action230(
         __0,
         __1,
         __2,
@@ -619155,7 +646263,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action232<
+fn __action236<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619171,12 +646279,12 @@
 {
     let __start0 = __7.2;
     let __end0 = __8.0;
-    let __temp0 = __action140(
+    let __temp0 = __action144(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action226(
+    __action230(
         __0,
         __1,
         __2,
@@ -619191,152 +646299,152 @@
     )
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action233<
->(
-    __0: (usize, usize, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Ident, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Vec<ast::FnParam>, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, Token, usize),
-    __8: (usize, ast::Type, usize),
-    __9: (usize, ast::Block, usize),
-    __10: (usize, usize, usize),
-) -> ast::Function
-{
-    let __start0 = __7.0;
-    let __end0 = __8.2;
-    let __temp0 = __action230(
-        __7,
-        __8,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action227(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __temp0,
-        __9,
-        __10,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action234<
->(
-    __0: (usize, usize, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Ident, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Vec<ast::FnParam>, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, ast::Block, usize),
-    __8: (usize, usize, usize),
-) -> ast::Function
-{
-    let __start0 = __6.2;
-    let __end0 = __7.0;
-    let __temp0 = __action140(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action227(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __temp0,
-        __7,
-        __8,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action235<
->(
-    __0: (usize, usize, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Ident, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Vec<ast::FnParam>, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, Token, usize),
-    __8: (usize, ast::Type, usize),
-    __9: (usize, ast::Block, usize),
-    __10: (usize, usize, usize),
-) -> ast::Function
-{
-    let __start0 = __7.0;
-    let __end0 = __8.2;
-    let __temp0 = __action230(
-        __7,
-        __8,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action228(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __temp0,
-        __9,
-        __10,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action236<
->(
-    __0: (usize, usize, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Ident, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Vec<ast::FnParam>, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, ast::Block, usize),
-    __8: (usize, usize, usize),
-) -> ast::Function
-{
-    let __start0 = __6.2;
-    let __end0 = __7.0;
-    let __temp0 = __action140(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action228(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __temp0,
-        __7,
-        __8,
-    )
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action237<
+>(
+    __0: (usize, usize, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Ident, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Vec<ast::FnParam>, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, Token, usize),
+    __8: (usize, ast::Type, usize),
+    __9: (usize, ast::Block, usize),
+    __10: (usize, usize, usize),
+) -> ast::Function
+{
+    let __start0 = __7.0;
+    let __end0 = __8.2;
+    let __temp0 = __action234(
+        __7,
+        __8,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action231(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __temp0,
+        __9,
+        __10,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action238<
+>(
+    __0: (usize, usize, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Ident, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Vec<ast::FnParam>, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, ast::Block, usize),
+    __8: (usize, usize, usize),
+) -> ast::Function
+{
+    let __start0 = __6.2;
+    let __end0 = __7.0;
+    let __temp0 = __action144(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action231(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __temp0,
+        __7,
+        __8,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action239<
+>(
+    __0: (usize, usize, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Ident, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Vec<ast::FnParam>, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, Token, usize),
+    __8: (usize, ast::Type, usize),
+    __9: (usize, ast::Block, usize),
+    __10: (usize, usize, usize),
+) -> ast::Function
+{
+    let __start0 = __7.0;
+    let __end0 = __8.2;
+    let __temp0 = __action234(
+        __7,
+        __8,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action232(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __temp0,
+        __9,
+        __10,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action240<
+>(
+    __0: (usize, usize, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Ident, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Vec<ast::FnParam>, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, ast::Block, usize),
+    __8: (usize, usize, usize),
+) -> ast::Function
+{
+    let __start0 = __6.2;
+    let __end0 = __7.0;
+    let __temp0 = __action144(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action232(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __temp0,
+        __7,
+        __8,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action241<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619352,12 +646460,12 @@
 {
     let __start0 = __6.0;
     let __end0 = __7.2;
-    let __temp0 = __action230(
+    let __temp0 = __action234(
         __6,
         __7,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action229(
+    __action233(
         __0,
         __1,
         __2,
@@ -619371,7 +646479,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action238<
+fn __action242<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619385,12 +646493,12 @@
 {
     let __start0 = __5.2;
     let __end0 = __6.0;
-    let __temp0 = __action140(
+    let __temp0 = __action144(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action229(
+    __action233(
         __0,
         __1,
         __2,
@@ -619404,7 +646512,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action239<
+fn __action243<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Type>, usize),
@@ -619413,19 +646521,19 @@
 {
     let __start0 = __0.0;
     let __end0 = __2.2;
-    let __temp0 = __action138(
+    let __temp0 = __action142(
         __0,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action136(
+    __action140(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action240<
+fn __action244<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619441,13 +646549,13 @@
 {
     let __start0 = __3.0;
     let __end0 = __5.2;
-    let __temp0 = __action239(
+    let __temp0 = __action243(
         __3,
         __4,
         __5,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action117(
+    __action118(
         __0,
         __1,
         __2,
@@ -619460,7 +646568,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action241<
+fn __action245<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619473,12 +646581,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __3.0;
-    let __temp0 = __action137(
+    let __temp0 = __action141(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action117(
+    __action118(
         __0,
         __1,
         __2,
@@ -619491,7 +646599,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action242<
+fn __action246<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Block, usize),
@@ -619499,18 +646607,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action150(
+    let __temp0 = __action154(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action148(
+    __action152(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action243<
+fn __action247<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619523,12 +646631,12 @@
 {
     let __start0 = __4.0;
     let __end0 = __5.2;
-    let __temp0 = __action242(
+    let __temp0 = __action246(
         __4,
         __5,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action69(
+    __action70(
         __0,
         __1,
         __2,
@@ -619539,7 +646647,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action244<
+fn __action248<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619550,12 +646658,12 @@
 {
     let __start0 = __3.2;
     let __end0 = __4.0;
-    let __temp0 = __action149(
+    let __temp0 = __action153(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action69(
+    __action70(
         __0,
         __1,
         __2,
@@ -619566,7 +646674,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action245<
+fn __action249<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
@@ -619575,19 +646683,19 @@
 {
     let __start0 = __0.0;
     let __end0 = __2.2;
-    let __temp0 = __action132(
+    let __temp0 = __action136(
         __0,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action130(
+    __action134(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action246<
+fn __action250<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619601,13 +646709,13 @@
 {
     let __start0 = __3.0;
     let __end0 = __5.2;
-    let __temp0 = __action245(
+    let __temp0 = __action249(
         __3,
         __4,
         __5,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action118(
+    __action119(
         __0,
         __1,
         __2,
@@ -619618,7 +646726,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action247<
+fn __action251<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -619629,12 +646737,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __3.0;
-    let __temp0 = __action131(
+    let __temp0 = __action135(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action118(
+    __action119(
         __0,
         __1,
         __2,
@@ -619645,7 +646753,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action248<
+fn __action252<
 >(
     __0: (usize, ast::Expression, usize),
     __1: (usize, Token, usize),
@@ -619653,7 +646761,85 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action176(
+    let __temp0 = __action180(
+        __0,
+        __1,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action216(
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action253<
+>(
+    __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
+    __1: (usize, ast::Expression, usize),
+    __2: (usize, Token, usize),
+) -> alloc::vec::Vec<ast::Expression>
+{
+    let __start0 = __1.0;
+    let __end0 = __2.2;
+    let __temp0 = __action180(
+        __1,
+        __2,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action217(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action254<
+>(
+    __0: (usize, core::option::Option<ast::Expression>, usize),
+) -> Vec<ast::Expression>
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action178(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action161(
+        __temp0,
+        __0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action255<
+>(
+    __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
+    __1: (usize, core::option::Option<ast::Expression>, usize),
+) -> Vec<ast::Expression>
+{
+    let __start0 = __0.0;
+    let __end0 = __0.2;
+    let __temp0 = __action179(
+        __0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action161(
+        __temp0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action256<
+>(
+    __0: (usize, ast::FnParam, usize),
+    __1: (usize, Token, usize),
+) -> alloc::vec::Vec<ast::FnParam>
+{
+    let __start0 = __0.0;
+    let __end0 = __1.2;
+    let __temp0 = __action192(
         __0,
         __1,
     );
@@ -619664,16 +646850,16 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action249<
+fn __action257<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
-    __1: (usize, ast::Expression, usize),
+    __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
+    __1: (usize, ast::FnParam, usize),
     __2: (usize, Token, usize),
-) -> alloc::vec::Vec<ast::Expression>
+) -> alloc::vec::Vec<ast::FnParam>
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action176(
+    let __temp0 = __action192(
         __1,
         __2,
     );
@@ -619685,175 +646871,19 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action250<
->(
-    __0: (usize, core::option::Option<ast::Expression>, usize),
-) -> Vec<ast::Expression>
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action174(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action157(
-        __temp0,
-        __0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action251<
->(
-    __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
-    __1: (usize, core::option::Option<ast::Expression>, usize),
-) -> Vec<ast::Expression>
-{
-    let __start0 = __0.0;
-    let __end0 = __0.2;
-    let __temp0 = __action175(
-        __0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action157(
-        __temp0,
-        __1,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action252<
->(
-    __0: (usize, ast::FnParam, usize),
-    __1: (usize, Token, usize),
-) -> alloc::vec::Vec<ast::FnParam>
-{
-    let __start0 = __0.0;
-    let __end0 = __1.2;
-    let __temp0 = __action188(
-        __0,
-        __1,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action208(
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action253<
->(
-    __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
-    __1: (usize, ast::FnParam, usize),
-    __2: (usize, Token, usize),
-) -> alloc::vec::Vec<ast::FnParam>
-{
-    let __start0 = __1.0;
-    let __end0 = __2.2;
-    let __temp0 = __action188(
-        __1,
-        __2,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action209(
-        __0,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action254<
+fn __action258<
 >(
     __0: (usize, core::option::Option<ast::FnParam>, usize),
 ) -> Vec<ast::FnParam>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action186(
+    let __temp0 = __action190(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action142(
-        __temp0,
-        __0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action255<
->(
-    __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
-    __1: (usize, core::option::Option<ast::FnParam>, usize),
-) -> Vec<ast::FnParam>
-{
-    let __start0 = __0.0;
-    let __end0 = __0.2;
-    let __temp0 = __action187(
-        __0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action142(
-        __temp0,
-        __1,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action256<
->(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, Token, usize),
-) -> alloc::vec::Vec<ast::Ident>
-{
-    let __start0 = __0.0;
-    let __end0 = __1.2;
-    let __temp0 = __action201(
-        __0,
-        __1,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action202(
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action257<
->(
-    __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-) -> alloc::vec::Vec<ast::Ident>
-{
-    let __start0 = __1.0;
-    let __end0 = __2.2;
-    let __temp0 = __action201(
-        __1,
-        __2,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action203(
-        __0,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action258<
->(
-    __0: (usize, core::option::Option<ast::Ident>, usize),
-) -> Vec<ast::Ident>
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action199(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action133(
+    __action146(
         __temp0,
         __0,
     )
@@ -619862,17 +646892,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action259<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
-    __1: (usize, core::option::Option<ast::Ident>, usize),
-) -> Vec<ast::Ident>
+    __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
+    __1: (usize, core::option::Option<ast::FnParam>, usize),
+) -> Vec<ast::FnParam>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action200(
+    let __temp0 = __action191(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action133(
+    __action146(
         __temp0,
         __1,
     )
@@ -619887,12 +646917,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action196(
+    let __temp0 = __action205(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action204(
+    __action206(
         __temp0,
     )
 }
@@ -619907,12 +646937,12 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action196(
+    let __temp0 = __action205(
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action205(
+    __action207(
         __0,
         __temp0,
     )
@@ -619926,12 +646956,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action194(
+    let __temp0 = __action203(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action134(
+    __action137(
         __temp0,
         __0,
     )
@@ -619946,11 +646976,11 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action195(
+    let __temp0 = __action204(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action134(
+    __action137(
         __temp0,
         __1,
     )
@@ -619959,18 +646989,18 @@
 #[allow(clippy::too_many_arguments)]
 fn __action264<
 >(
-    __0: (usize, ast::StructField, usize),
+    __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
-) -> alloc::vec::Vec<ast::StructField>
+) -> alloc::vec::Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action193(
+    let __temp0 = __action200(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action206(
+    __action208(
         __temp0,
     )
 }
@@ -619978,19 +647008,19 @@
 #[allow(clippy::too_many_arguments)]
 fn __action265<
 >(
-    __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
-    __1: (usize, ast::StructField, usize),
+    __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
+    __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
-) -> alloc::vec::Vec<ast::StructField>
+) -> alloc::vec::Vec<ast::Ident>
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action193(
+    let __temp0 = __action200(
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action207(
+    __action209(
         __0,
         __temp0,
     )
@@ -619999,17 +647029,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action266<
 >(
-    __0: (usize, core::option::Option<ast::StructField>, usize),
-) -> Vec<ast::StructField>
+    __0: (usize, core::option::Option<ast::Ident>, usize),
+) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action191(
+    let __temp0 = __action198(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action135(
+    __action138(
         __temp0,
         __0,
     )
@@ -620018,17 +647048,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action267<
 >(
-    __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
-    __1: (usize, core::option::Option<ast::StructField>, usize),
-) -> Vec<ast::StructField>
+    __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
+    __1: (usize, core::option::Option<ast::Ident>, usize),
+) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action192(
+    let __temp0 = __action199(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action135(
+    __action138(
         __temp0,
         __1,
     )
@@ -620037,13 +647067,13 @@
 #[allow(clippy::too_many_arguments)]
 fn __action268<
 >(
-    __0: (usize, (ast::Ident, ast::StructInitField), usize),
+    __0: (usize, ast::StructField, usize),
     __1: (usize, Token, usize),
-) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
+) -> alloc::vec::Vec<ast::StructField>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action183(
+    let __temp0 = __action197(
         __0,
         __1,
     );
@@ -620056,14 +647086,14 @@
 #[allow(clippy::too_many_arguments)]
 fn __action269<
 >(
-    __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
-    __1: (usize, (ast::Ident, ast::StructInitField), usize),
+    __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
+    __1: (usize, ast::StructField, usize),
     __2: (usize, Token, usize),
-) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
+) -> alloc::vec::Vec<ast::StructField>
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action183(
+    let __temp0 = __action197(
         __1,
         __2,
     );
@@ -620077,17 +647107,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action270<
 >(
-    __0: (usize, core::option::Option<(ast::Ident, ast::StructInitField)>, usize),
-) -> Vec<(ast::Ident, ast::StructInitField)>
+    __0: (usize, core::option::Option<ast::StructField>, usize),
+) -> Vec<ast::StructField>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action181(
+    let __temp0 = __action195(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action147(
+    __action139(
         __temp0,
         __0,
     )
@@ -620096,17 +647126,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action271<
 >(
-    __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
-    __1: (usize, core::option::Option<(ast::Ident, ast::StructInitField)>, usize),
-) -> Vec<(ast::Ident, ast::StructInitField)>
+    __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
+    __1: (usize, core::option::Option<ast::StructField>, usize),
+) -> Vec<ast::StructField>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action182(
+    let __temp0 = __action196(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action147(
+    __action139(
         __temp0,
         __1,
     )
@@ -620115,13 +647145,13 @@
 #[allow(clippy::too_many_arguments)]
 fn __action272<
 >(
-    __0: (usize, ast::Type, usize),
+    __0: (usize, (ast::Ident, ast::StructInitField), usize),
     __1: (usize, Token, usize),
-) -> alloc::vec::Vec<ast::Type>
+) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action173(
+    let __temp0 = __action187(
         __0,
         __1,
     );
@@ -620134,14 +647164,14 @@
 #[allow(clippy::too_many_arguments)]
 fn __action273<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Type>, usize),
-    __1: (usize, ast::Type, usize),
+    __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
+    __1: (usize, (ast::Ident, ast::StructInitField), usize),
     __2: (usize, Token, usize),
-) -> alloc::vec::Vec<ast::Type>
+) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action173(
+    let __temp0 = __action187(
         __1,
         __2,
     );
@@ -620155,17 +647185,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action274<
 >(
-    __0: (usize, core::option::Option<ast::Type>, usize),
-) -> Vec<ast::Type>
+    __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 = __action171(
+    let __temp0 = __action185(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action162(
+    __action151(
         __temp0,
         __0,
     )
@@ -620174,17 +647204,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action275<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Type>, usize),
-    __1: (usize, core::option::Option<ast::Type>, usize),
-) -> Vec<ast::Type>
+    __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
+    __1: (usize, core::option::Option<(ast::Ident, ast::StructInitField)>, usize),
+) -> Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action172(
+    let __temp0 = __action186(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action162(
+    __action151(
         __temp0,
         __1,
     )
@@ -620192,6 +647222,84 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action276<
+>(
+    __0: (usize, ast::Type, usize),
+    __1: (usize, Token, usize),
+) -> alloc::vec::Vec<ast::Type>
+{
+    let __start0 = __0.0;
+    let __end0 = __1.2;
+    let __temp0 = __action177(
+        __0,
+        __1,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action218(
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action277<
+>(
+    __0: (usize, alloc::vec::Vec<ast::Type>, usize),
+    __1: (usize, ast::Type, usize),
+    __2: (usize, Token, usize),
+) -> alloc::vec::Vec<ast::Type>
+{
+    let __start0 = __1.0;
+    let __end0 = __2.2;
+    let __temp0 = __action177(
+        __1,
+        __2,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action219(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action278<
+>(
+    __0: (usize, core::option::Option<ast::Type>, usize),
+) -> Vec<ast::Type>
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action175(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action166(
+        __temp0,
+        __0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action279<
+>(
+    __0: (usize, alloc::vec::Vec<ast::Type>, usize),
+    __1: (usize, core::option::Option<ast::Type>, usize),
+) -> Vec<ast::Type>
+{
+    let __start0 = __0.0;
+    let __end0 = __0.2;
+    let __temp0 = __action176(
+        __0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action166(
+        __temp0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action280<
 >(
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
@@ -620201,12 +647309,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action216(
+    __action220(
         __temp0,
         __0,
         __1,
@@ -620216,7 +647324,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action277<
+fn __action281<
 >(
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -620227,12 +647335,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action217(
+    __action221(
         __temp0,
         __0,
         __1,
@@ -620243,7 +647351,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action278<
+fn __action282<
 >(
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
@@ -620253,12 +647361,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action218(
+    __action222(
         __temp0,
         __0,
         __1,
@@ -620268,7 +647376,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action279<
+fn __action283<
 >(
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -620279,12 +647387,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action219(
+    __action223(
         __temp0,
         __0,
         __1,
@@ -620294,90 +647402,6 @@
     )
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action280<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, usize, usize),
-) -> ast::BinaryOp
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action87(
-        __temp0,
-        __0,
-        __1,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action281<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, usize, usize),
-) -> ast::BinaryOp
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action88(
-        __temp0,
-        __0,
-        __1,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action282<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, usize, usize),
-) -> ast::BinaryOp
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action89(
-        __temp0,
-        __0,
-        __1,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action283<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, usize, usize),
-) -> ast::BinaryOp
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action90(
-        __temp0,
-        __0,
-        __1,
-    )
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action284<
 >(
@@ -620387,12 +647411,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action91(
+    __action88(
         __temp0,
         __0,
         __1,
@@ -620408,12 +647432,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action92(
+    __action89(
         __temp0,
         __0,
         __1,
@@ -620429,12 +647453,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action93(
+    __action90(
         __temp0,
         __0,
         __1,
@@ -620450,12 +647474,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action94(
+    __action91(
         __temp0,
         __0,
         __1,
@@ -620471,12 +647495,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action95(
+    __action92(
         __temp0,
         __0,
         __1,
@@ -620492,12 +647516,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action96(
+    __action93(
         __temp0,
         __0,
         __1,
@@ -620513,12 +647537,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action97(
+    __action94(
         __temp0,
         __0,
         __1,
@@ -620534,12 +647558,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action98(
+    __action95(
         __temp0,
         __0,
         __1,
@@ -620555,12 +647579,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action99(
+    __action96(
         __temp0,
         __0,
         __1,
@@ -620576,12 +647600,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action100(
+    __action97(
         __temp0,
         __0,
         __1,
@@ -620597,12 +647621,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action101(
+    __action98(
         __temp0,
         __0,
         __1,
@@ -620618,7 +647642,70 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action99(
+        __temp0,
+        __0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action296<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, usize, usize),
+) -> ast::BinaryOp
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action100(
+        __temp0,
+        __0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action297<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, usize, usize),
+) -> ast::BinaryOp
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action101(
+        __temp0,
+        __0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action298<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, usize, usize),
+) -> ast::BinaryOp
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -620631,7 +647718,28 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action296<
+fn __action299<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, usize, usize),
+) -> ast::BinaryOp
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action103(
+        __temp0,
+        __0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action300<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Statement>, usize),
@@ -620641,12 +647749,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action52(
+    __action53(
         __temp0,
         __0,
         __1,
@@ -620656,7 +647764,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action297<
+fn __action301<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -620670,12 +647778,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action115(
+    __action116(
         __temp0,
         __0,
         __1,
@@ -620689,7 +647797,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action298<
+fn __action302<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -620699,31 +647807,7 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action76(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action299<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-    __2: (usize, usize, usize),
-) -> ast::Expression
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -620733,11 +647817,12 @@
         __0,
         __1,
         __2,
+        __3,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action300<
+fn __action303<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -620746,7 +647831,7 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -620760,7 +647845,30 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action301<
+fn __action304<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+    __2: (usize, usize, usize),
+) -> ast::Expression
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action79(
+        __temp0,
+        __0,
+        __1,
+        __2,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action305<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -620771,12 +647879,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action60(
+    __action61(
         __temp0,
         __0,
         __1,
@@ -620787,7 +647895,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action302<
+fn __action306<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -620797,12 +647905,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action113(
+    __action114(
         __temp0,
         __0,
         __1,
@@ -620812,7 +647920,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action303<
+fn __action307<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -620824,12 +647932,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action67(
+    __action68(
         __temp0,
         __0,
         __1,
@@ -620841,7 +647949,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action304<
+fn __action308<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -620855,156 +647963,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action68(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action305<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Ident, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Vec<ast::FnParam>, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, Token, usize),
-    __8: (usize, ast::Type, usize),
-    __9: (usize, ast::Block, usize),
-    __10: (usize, usize, usize),
-) -> ast::Function
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action231(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-        __8,
-        __9,
-        __10,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action306<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Ident, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Vec<ast::FnParam>, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, ast::Block, usize),
-    __8: (usize, usize, usize),
-) -> ast::Function
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action232(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-        __8,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action307<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, Vec<ast::FnParam>, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, ast::Type, usize),
-    __8: (usize, ast::Block, usize),
-    __9: (usize, usize, usize),
-) -> ast::Function
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action233(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-        __8,
-        __9,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action308<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, Vec<ast::FnParam>, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, ast::Block, usize),
-    __7: (usize, usize, usize),
-) -> ast::Function
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action234(
+    __action69(
         __temp0,
         __0,
         __1,
@@ -621022,19 +647986,20 @@
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, Vec<ast::FnParam>, usize),
-    __5: (usize, Token, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Ident, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Vec<ast::FnParam>, usize),
     __6: (usize, Token, usize),
-    __7: (usize, ast::Type, usize),
-    __8: (usize, ast::Block, usize),
-    __9: (usize, usize, usize),
+    __7: (usize, Token, usize),
+    __8: (usize, ast::Type, usize),
+    __9: (usize, ast::Block, usize),
+    __10: (usize, usize, usize),
 ) -> ast::Function
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621051,6 +648016,7 @@
         __7,
         __8,
         __9,
+        __10,
     )
 }
 
@@ -621059,17 +648025,18 @@
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, Vec<ast::FnParam>, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, ast::Block, usize),
-    __7: (usize, usize, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Ident, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Vec<ast::FnParam>, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, ast::Block, usize),
+    __8: (usize, usize, usize),
 ) -> ast::Function
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621084,6 +648051,7 @@
         __5,
         __6,
         __7,
+        __8,
     )
 }
 
@@ -621091,19 +648059,20 @@
 fn __action311<
 >(
     __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::FnParam>, usize),
-    __4: (usize, Token, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, Vec<ast::FnParam>, usize),
     __5: (usize, Token, usize),
-    __6: (usize, ast::Type, usize),
-    __7: (usize, ast::Block, usize),
-    __8: (usize, usize, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, ast::Type, usize),
+    __8: (usize, ast::Block, usize),
+    __9: (usize, usize, usize),
 ) -> ast::Function
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621119,6 +648088,7 @@
         __6,
         __7,
         __8,
+        __9,
     )
 }
 
@@ -621126,17 +648096,18 @@
 fn __action312<
 >(
     __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::FnParam>, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, ast::Block, usize),
-    __6: (usize, usize, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, Vec<ast::FnParam>, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, ast::Block, usize),
+    __7: (usize, usize, usize),
 ) -> ast::Function
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621150,437 +648121,63 @@
         __4,
         __5,
         __6,
+        __7,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
 fn __action313<
 >(
-    __0: (usize, String, usize),
-    __1: (usize, usize, usize),
-) -> ast::Ident
+    __0: (usize, Token, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, Vec<ast::FnParam>, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, ast::Type, usize),
+    __8: (usize, ast::Block, usize),
+    __9: (usize, usize, usize),
+) -> ast::Function
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action38(
+    __action239(
         __temp0,
         __0,
         __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __7,
+        __8,
+        __9,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
 fn __action314<
->(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, usize, usize),
-) -> ast::Type
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action45(
-        __temp0,
-        __0,
-        __1,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action315<
->(
-    __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 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action46(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action316<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-    __2: (usize, ast::Block, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, ast::Block, usize),
-    __5: (usize, usize, usize),
-) -> ast::IfStmt
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action243(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action317<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-    __2: (usize, ast::Block, usize),
-    __3: (usize, usize, usize),
-) -> ast::IfStmt
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action244(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action318<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Vec<ast::Ident>, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::Ident>, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, usize, usize),
-) -> ast::Import
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action246(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action319<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Vec<ast::Ident>, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, usize, usize),
-) -> ast::Import
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action247(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action320<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
     __2: (usize, ast::Ident, usize),
     __3: (usize, Token, usize),
-    __4: (usize, ast::Type, usize),
+    __4: (usize, Vec<ast::FnParam>, usize),
     __5: (usize, Token, usize),
-    __6: (usize, ast::Expression, usize),
+    __6: (usize, ast::Block, usize),
     __7: (usize, usize, usize),
-) -> ast::LetStmt
+) -> ast::Function
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action222(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action321<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Type, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, ast::Expression, usize),
-    __6: (usize, usize, usize),
-) -> ast::LetStmt
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action223(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action322<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, ast::Type, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, ast::StructInitExpr, usize),
-    __7: (usize, usize, usize),
-) -> ast::LetStmt
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action224(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action323<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Type, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, ast::StructInitExpr, usize),
-    __6: (usize, usize, usize),
-) -> ast::LetStmt
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action225(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action324<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, core::option::Option<Vec<ast::Import>>, usize),
-    __4: (usize, Vec<ast::ModuleStatement>, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, usize, usize),
-) -> ast::Module
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action119(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action325<
->(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, core::option::Option<Vec<ast::PathSegment>>, usize),
-    __2: (usize, usize, usize),
-) -> ast::PathExpr
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action47(
-        __temp0,
-        __0,
-        __1,
-        __2,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action326<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, usize, usize),
-) -> ast::PathSegment
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action51(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action327<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, core::option::Option<ast::Expression>, usize),
-    __2: (usize, usize, usize),
-) -> ast::ReturnStmt
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action65(
-        __temp0,
-        __0,
-        __1,
-        __2,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action328<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::Type>, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, Vec<ast::StructField>, usize),
-    __7: (usize, Token, usize),
-    __8: (usize, usize, usize),
-) -> ast::Struct
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621595,24 +648192,26 @@
         __5,
         __6,
         __7,
-        __8,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action329<
+fn __action315<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::StructField>, usize),
+    __3: (usize, Vec<ast::FnParam>, usize),
     __4: (usize, Token, usize),
-    __5: (usize, usize, usize),
-) -> ast::Struct
+    __5: (usize, Token, usize),
+    __6: (usize, ast::Type, usize),
+    __7: (usize, ast::Block, usize),
+    __8: (usize, usize, usize),
+) -> ast::Function
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621625,26 +648224,423 @@
         __3,
         __4,
         __5,
+        __6,
+        __7,
+        __8,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action316<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::FnParam>, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, ast::Block, usize),
+    __6: (usize, usize, usize),
+) -> ast::Function
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action242(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action317<
+>(
+    __0: (usize, String, usize),
+    __1: (usize, usize, usize),
+) -> ast::Ident
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action39(
+        __temp0,
+        __0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action318<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, usize, usize),
+) -> ast::Type
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action46(
+        __temp0,
+        __0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action319<
+>(
+    __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 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action47(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action320<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+    __2: (usize, ast::Block, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, ast::Block, usize),
+    __5: (usize, usize, usize),
+) -> ast::IfStmt
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action247(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action321<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+    __2: (usize, ast::Block, usize),
+    __3: (usize, usize, usize),
+) -> ast::IfStmt
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action248(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action322<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, Vec<ast::Ident>, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::Ident>, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, usize, usize),
+) -> ast::Import
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action250(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action323<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, Vec<ast::Ident>, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, usize, usize),
+) -> ast::Import
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action251(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action324<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, ast::Type, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, ast::Expression, usize),
+    __7: (usize, usize, usize),
+) -> ast::LetStmt
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action226(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __7,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action325<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Type, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, ast::Expression, usize),
+    __6: (usize, usize, usize),
+) -> ast::LetStmt
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action227(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action326<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, ast::Type, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, ast::StructInitExpr, usize),
+    __7: (usize, usize, usize),
+) -> ast::LetStmt
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action228(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __7,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action327<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Type, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, ast::StructInitExpr, usize),
+    __6: (usize, usize, usize),
+) -> ast::LetStmt
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action229(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action328<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, core::option::Option<Vec<ast::Import>>, usize),
+    __4: (usize, Vec<ast::ModuleStatement>, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, usize, usize),
+) -> ast::Module
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action121(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action329<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, core::option::Option<Vec<ast::PathSegment>>, usize),
+    __2: (usize, usize, usize),
+) -> ast::PathExpr
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action48(
+        __temp0,
+        __0,
+        __1,
+        __2,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
 fn __action330<
 >(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Type, usize),
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+    __2: (usize, Token, usize),
     __3: (usize, usize, usize),
-) -> ast::StructField
+) -> ast::PathSegment
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action116(
+    __action52(
         __temp0,
         __0,
         __1,
@@ -621655,6 +648651,118 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action331<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, core::option::Option<ast::Expression>, usize),
+    __2: (usize, usize, usize),
+) -> ast::ReturnStmt
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action66(
+        __temp0,
+        __0,
+        __1,
+        __2,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action332<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::Type>, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, Vec<ast::StructField>, usize),
+    __7: (usize, Token, usize),
+    __8: (usize, usize, usize),
+) -> ast::Struct
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action244(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __7,
+        __8,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action333<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::StructField>, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, usize, usize),
+) -> ast::Struct
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action245(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action334<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Type, usize),
+    __3: (usize, usize, usize),
+) -> ast::StructField
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action117(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action335<
 >(
     __0: (usize, ast::Type, usize),
     __1: (usize, Token, usize),
@@ -621665,12 +648773,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action112(
+    __action113(
         __temp0,
         __0,
         __1,
@@ -621681,7 +648789,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action332<
+fn __action336<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -621691,32 +648799,7 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action110(
-        __temp0,
-        __0,
-        __1,
-        __2,
-        __3,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action333<
->(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::StructInitExpr, usize),
-    __3: (usize, usize, usize),
-) -> (ast::Ident, ast::StructInitField)
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621731,7 +648814,32 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action334<
+fn __action337<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::StructInitExpr, usize),
+    __3: (usize, usize, usize),
+) -> (ast::Ident, ast::StructInitField)
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action112(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action338<
 >(
     __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     __1: (usize, ast::Ident, usize),
@@ -621740,12 +648848,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action43(
+    __action44(
         __temp0,
         __0,
         __1,
@@ -621754,7 +648862,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action335<
+fn __action339<
 >(
     __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     __1: (usize, ast::Ident, usize),
@@ -621766,12 +648874,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action44(
+    __action45(
         __temp0,
         __0,
         __1,
@@ -621783,7 +648891,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action336<
+fn __action340<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -621791,28 +648899,7 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action103(
-        __temp0,
-        __0,
-        __1,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action337<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, usize, usize),
-) -> ast::UnaryOp
-{
-    let __start0 = __0.0;
-    let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621825,7 +648912,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action338<
+fn __action341<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -621833,7 +648920,7 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621846,15 +648933,15 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action339<
+fn __action342<
 >(
-    __0: (usize, u128, usize),
+    __0: (usize, Token, usize),
     __1: (usize, usize, usize),
-) -> ast::ValueExpr
+) -> ast::UnaryOp
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621867,15 +648954,15 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action340<
+fn __action343<
 >(
-    __0: (usize, bool, usize),
+    __0: (usize, u128, usize),
     __1: (usize, usize, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621888,15 +648975,15 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action341<
+fn __action344<
 >(
-    __0: (usize, String, usize),
+    __0: (usize, bool, usize),
     __1: (usize, usize, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
@@ -621909,7 +648996,28 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action342<
+fn __action345<
+>(
+    __0: (usize, String, usize),
+    __1: (usize, usize, usize),
+) -> ast::ValueExpr
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action170(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action109(
+        __temp0,
+        __0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action346<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -621919,12 +649027,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action166(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action66(
+    __action67(
         __temp0,
         __0,
         __1,
@@ -621934,7 +649042,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action343<
+fn __action347<
 >(
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
@@ -621943,12 +649051,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action276(
+    __action280(
         __0,
         __1,
         __2,
@@ -621957,7 +649065,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action344<
+fn __action348<
 >(
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -621967,12 +649075,12 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action277(
+    __action281(
         __0,
         __1,
         __2,
@@ -621982,7 +649090,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action345<
+fn __action349<
 >(
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
@@ -621991,12 +649099,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action278(
+    __action282(
         __0,
         __1,
         __2,
@@ -622005,7 +649113,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action346<
+fn __action350<
 >(
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -622015,92 +649123,16 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action279(
-        __0,
-        __1,
-        __2,
-        __3,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action347<
->(
-    __0: (usize, Token, usize),
-) -> ast::BinaryOp
-{
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action280(
-        __0,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action348<
->(
-    __0: (usize, Token, usize),
-) -> ast::BinaryOp
-{
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action281(
-        __0,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action349<
->(
-    __0: (usize, Token, usize),
-) -> ast::BinaryOp
-{
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action282(
-        __0,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action350<
->(
-    __0: (usize, Token, usize),
-) -> ast::BinaryOp
-{
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action283(
         __0,
+        __1,
+        __2,
+        __3,
         __temp0,
     )
 }
@@ -622113,7 +649145,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622132,7 +649164,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622151,7 +649183,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622170,7 +649202,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622189,7 +649221,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622208,7 +649240,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622227,7 +649259,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622246,7 +649278,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622265,7 +649297,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622284,7 +649316,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622303,7 +649335,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622322,7 +649354,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622335,6 +649367,82 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action363<
+>(
+    __0: (usize, Token, usize),
+) -> ast::BinaryOp
+{
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action296(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action364<
+>(
+    __0: (usize, Token, usize),
+) -> ast::BinaryOp
+{
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action297(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action365<
+>(
+    __0: (usize, Token, usize),
+) -> ast::BinaryOp
+{
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action298(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action366<
+>(
+    __0: (usize, Token, usize),
+) -> ast::BinaryOp
+{
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action299(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action367<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Statement>, usize),
@@ -622343,12 +649451,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action296(
+    __action300(
         __0,
         __1,
         __2,
@@ -622357,7 +649465,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action364<
+fn __action368<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -622370,12 +649478,12 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action297(
+    __action301(
         __0,
         __1,
         __2,
@@ -622388,7 +649496,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action365<
+fn __action369<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -622397,97 +649505,7 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action298(
-        __0,
-        __1,
-        __2,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action366<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-) -> ast::Expression
-{
-    let __start0 = __1.2;
-    let __end0 = __1.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action299(
-        __0,
-        __1,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action367<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-) -> ast::Expression
-{
-    let __start0 = __1.2;
-    let __end0 = __1.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action300(
-        __0,
-        __1,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action368<
->(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Vec<ast::Expression>, usize),
-    __3: (usize, Token, usize),
-) -> ast::FnCallExpr
-{
-    let __start0 = __3.2;
-    let __end0 = __3.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action301(
-        __0,
-        __1,
-        __2,
-        __3,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action369<
->(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Type, usize),
-) -> ast::FnParam
-{
-    let __start0 = __2.2;
-    let __end0 = __2.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622502,6 +649520,96 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action370<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+) -> ast::Expression
+{
+    let __start0 = __1.2;
+    let __end0 = __1.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action303(
+        __0,
+        __1,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action371<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+) -> ast::Expression
+{
+    let __start0 = __1.2;
+    let __end0 = __1.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action304(
+        __0,
+        __1,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action372<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, Vec<ast::Expression>, usize),
+    __3: (usize, Token, usize),
+) -> ast::FnCallExpr
+{
+    let __start0 = __3.2;
+    let __end0 = __3.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action305(
+        __0,
+        __1,
+        __2,
+        __3,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action373<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Type, usize),
+) -> ast::FnParam
+{
+    let __start0 = __2.2;
+    let __end0 = __2.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action306(
+        __0,
+        __1,
+        __2,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action374<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -622512,12 +649620,12 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action303(
+    __action307(
         __0,
         __1,
         __2,
@@ -622528,7 +649636,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action371<
+fn __action375<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -622541,143 +649649,7 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action304(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action372<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Ident, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Vec<ast::FnParam>, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, Token, usize),
-    __8: (usize, ast::Type, usize),
-    __9: (usize, ast::Block, usize),
-) -> ast::Function
-{
-    let __start0 = __9.2;
-    let __end0 = __9.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action305(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-        __8,
-        __9,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action373<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Ident, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Vec<ast::FnParam>, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, ast::Block, usize),
-) -> ast::Function
-{
-    let __start0 = __7.2;
-    let __end0 = __7.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action306(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action374<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, Vec<ast::FnParam>, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, Token, usize),
-    __7: (usize, ast::Type, usize),
-    __8: (usize, ast::Block, usize),
-) -> ast::Function
-{
-    let __start0 = __8.2;
-    let __end0 = __8.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action307(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __7,
-        __8,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action375<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, Vec<ast::FnParam>, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, ast::Block, usize),
-) -> ast::Function
-{
-    let __start0 = __6.2;
-    let __end0 = __6.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622699,18 +649671,19 @@
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, Vec<ast::FnParam>, usize),
-    __5: (usize, Token, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Ident, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Vec<ast::FnParam>, usize),
     __6: (usize, Token, usize),
-    __7: (usize, ast::Type, usize),
-    __8: (usize, ast::Block, usize),
+    __7: (usize, Token, usize),
+    __8: (usize, ast::Type, usize),
+    __9: (usize, ast::Block, usize),
 ) -> ast::Function
 {
-    let __start0 = __8.2;
-    let __end0 = __8.2;
-    let __temp0 = __action165(
+    let __start0 = __9.2;
+    let __end0 = __9.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622725,6 +649698,7 @@
         __6,
         __7,
         __8,
+        __9,
         __temp0,
     )
 }
@@ -622734,16 +649708,17 @@
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, Vec<ast::FnParam>, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, ast::Block, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Ident, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Vec<ast::FnParam>, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, ast::Block, usize),
 ) -> ast::Function
 {
-    let __start0 = __6.2;
-    let __end0 = __6.2;
-    let __temp0 = __action165(
+    let __start0 = __7.2;
+    let __end0 = __7.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622756,6 +649731,7 @@
         __4,
         __5,
         __6,
+        __7,
         __temp0,
     )
 }
@@ -622764,18 +649740,19 @@
 fn __action378<
 >(
     __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::FnParam>, usize),
-    __4: (usize, Token, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, Vec<ast::FnParam>, usize),
     __5: (usize, Token, usize),
-    __6: (usize, ast::Type, usize),
-    __7: (usize, ast::Block, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, ast::Type, usize),
+    __8: (usize, ast::Block, usize),
 ) -> ast::Function
 {
-    let __start0 = __7.2;
-    let __end0 = __7.2;
-    let __temp0 = __action165(
+    let __start0 = __8.2;
+    let __end0 = __8.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622789,6 +649766,7 @@
         __5,
         __6,
         __7,
+        __8,
         __temp0,
     )
 }
@@ -622797,16 +649775,17 @@
 fn __action379<
 >(
     __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::FnParam>, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, ast::Block, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, Vec<ast::FnParam>, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, ast::Block, usize),
 ) -> ast::Function
 {
-    let __start0 = __5.2;
-    let __end0 = __5.2;
-    let __temp0 = __action165(
+    let __start0 = __6.2;
+    let __end0 = __6.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -622818,6 +649797,7 @@
         __3,
         __4,
         __5,
+        __6,
         __temp0,
     )
 }
@@ -622825,18 +649805,34 @@
 #[allow(clippy::too_many_arguments)]
 fn __action380<
 >(
-    __0: (usize, String, usize),
-) -> ast::Ident
+    __0: (usize, Token, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, Vec<ast::FnParam>, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, Token, usize),
+    __7: (usize, ast::Type, usize),
+    __8: (usize, ast::Block, usize),
+) -> ast::Function
 {
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __start0 = __8.2;
+    let __end0 = __8.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action313(
         __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __7,
+        __8,
         __temp0,
     )
 }
@@ -622844,18 +649840,30 @@
 #[allow(clippy::too_many_arguments)]
 fn __action381<
 >(
-    __0: (usize, ast::Ident, usize),
-) -> ast::Type
+    __0: (usize, Token, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, Vec<ast::FnParam>, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, ast::Block, usize),
+) -> ast::Function
 {
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __start0 = __6.2;
+    let __end0 = __6.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action314(
         __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
         __temp0,
     )
 }
@@ -622863,367 +649871,24 @@
 #[allow(clippy::too_many_arguments)]
 fn __action382<
 >(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, Token, usize),
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::Type>, usize),
+    __3: (usize, Vec<ast::FnParam>, usize),
     __4: (usize, Token, usize),
-) -> ast::Type
+    __5: (usize, Token, usize),
+    __6: (usize, ast::Type, usize),
+    __7: (usize, ast::Block, usize),
+) -> ast::Function
 {
-    let __start0 = __4.2;
-    let __end0 = __4.2;
-    let __temp0 = __action165(
+    let __start0 = __7.2;
+    let __end0 = __7.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action315(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action383<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-    __2: (usize, ast::Block, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, ast::Block, usize),
-) -> ast::IfStmt
-{
-    let __start0 = __4.2;
-    let __end0 = __4.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action316(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action384<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-    __2: (usize, ast::Block, usize),
-) -> ast::IfStmt
-{
-    let __start0 = __2.2;
-    let __end0 = __2.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action317(
-        __0,
-        __1,
-        __2,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action385<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Vec<ast::Ident>, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::Ident>, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Token, usize),
-) -> ast::Import
-{
-    let __start0 = __5.2;
-    let __end0 = __5.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action318(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action386<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Vec<ast::Ident>, usize),
-    __2: (usize, Token, usize),
-) -> ast::Import
-{
-    let __start0 = __2.2;
-    let __end0 = __2.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action319(
-        __0,
-        __1,
-        __2,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action387<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, ast::Type, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, ast::Expression, usize),
-) -> ast::LetStmt
-{
-    let __start0 = __6.2;
-    let __end0 = __6.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action320(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action388<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Type, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, ast::Expression, usize),
-) -> ast::LetStmt
-{
-    let __start0 = __5.2;
-    let __end0 = __5.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action321(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action389<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Ident, usize),
-    __3: (usize, Token, usize),
-    __4: (usize, ast::Type, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, ast::StructInitExpr, usize),
-) -> ast::LetStmt
-{
-    let __start0 = __6.2;
-    let __end0 = __6.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action322(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __6,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action390<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, ast::Type, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, ast::StructInitExpr, usize),
-) -> ast::LetStmt
-{
-    let __start0 = __5.2;
-    let __end0 = __5.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action323(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action391<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, core::option::Option<Vec<ast::Import>>, usize),
-    __4: (usize, Vec<ast::ModuleStatement>, usize),
-    __5: (usize, Token, usize),
-) -> ast::Module
-{
-    let __start0 = __5.2;
-    let __end0 = __5.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action324(
-        __0,
-        __1,
-        __2,
-        __3,
-        __4,
-        __5,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action392<
->(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, core::option::Option<Vec<ast::PathSegment>>, usize),
-) -> ast::PathExpr
-{
-    let __start0 = __1.2;
-    let __end0 = __1.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action325(
-        __0,
-        __1,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action393<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-    __2: (usize, Token, usize),
-) -> ast::PathSegment
-{
-    let __start0 = __2.2;
-    let __end0 = __2.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action326(
-        __0,
-        __1,
-        __2,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action394<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, core::option::Option<ast::Expression>, usize),
-) -> ast::ReturnStmt
-{
-    let __start0 = __1.2;
-    let __end0 = __1.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action327(
-        __0,
-        __1,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action395<
->(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Ident, usize),
-    __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::Type>, usize),
-    __4: (usize, Token, usize),
-    __5: (usize, Token, usize),
-    __6: (usize, Vec<ast::StructField>, usize),
-    __7: (usize, Token, usize),
-) -> ast::Struct
-{
-    let __start0 = __7.2;
-    let __end0 = __7.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action328(
         __0,
         __1,
         __2,
@@ -623237,23 +649902,90 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action396<
+fn __action383<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
     __2: (usize, Token, usize),
-    __3: (usize, Vec<ast::StructField>, usize),
+    __3: (usize, Vec<ast::FnParam>, usize),
     __4: (usize, Token, usize),
-) -> ast::Struct
+    __5: (usize, ast::Block, usize),
+) -> ast::Function
 {
-    let __start0 = __4.2;
-    let __end0 = __4.2;
-    let __temp0 = __action165(
+    let __start0 = __5.2;
+    let __end0 = __5.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action329(
+    __action316(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action384<
+>(
+    __0: (usize, String, usize),
+) -> ast::Ident
+{
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action317(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action385<
+>(
+    __0: (usize, ast::Ident, usize),
+) -> ast::Type
+{
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action318(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action386<
+>(
+    __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 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action319(
         __0,
         __1,
         __2,
@@ -623264,16 +649996,288 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action397<
+fn __action387<
 >(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Type, usize),
-) -> ast::StructField
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+    __2: (usize, ast::Block, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, ast::Block, usize),
+) -> ast::IfStmt
+{
+    let __start0 = __4.2;
+    let __end0 = __4.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action320(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action388<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+    __2: (usize, ast::Block, usize),
+) -> ast::IfStmt
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action321(
+        __0,
+        __1,
+        __2,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action389<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, Vec<ast::Ident>, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::Ident>, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Token, usize),
+) -> ast::Import
+{
+    let __start0 = __5.2;
+    let __end0 = __5.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action322(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action390<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, Vec<ast::Ident>, usize),
+    __2: (usize, Token, usize),
+) -> ast::Import
+{
+    let __start0 = __2.2;
+    let __end0 = __2.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action323(
+        __0,
+        __1,
+        __2,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action391<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, ast::Type, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, ast::Expression, usize),
+) -> ast::LetStmt
+{
+    let __start0 = __6.2;
+    let __end0 = __6.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action324(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action392<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Type, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, ast::Expression, usize),
+) -> ast::LetStmt
+{
+    let __start0 = __5.2;
+    let __end0 = __5.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action325(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action393<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Ident, usize),
+    __3: (usize, Token, usize),
+    __4: (usize, ast::Type, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, ast::StructInitExpr, usize),
+) -> ast::LetStmt
+{
+    let __start0 = __6.2;
+    let __end0 = __6.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action326(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action394<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, ast::Type, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, ast::StructInitExpr, usize),
+) -> ast::LetStmt
+{
+    let __start0 = __5.2;
+    let __end0 = __5.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action327(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action395<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, core::option::Option<Vec<ast::Import>>, usize),
+    __4: (usize, Vec<ast::ModuleStatement>, usize),
+    __5: (usize, Token, usize),
+) -> ast::Module
+{
+    let __start0 = __5.2;
+    let __end0 = __5.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action328(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action396<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, core::option::Option<Vec<ast::PathSegment>>, usize),
+) -> ast::PathExpr
+{
+    let __start0 = __1.2;
+    let __end0 = __1.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action329(
+        __0,
+        __1,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action397<
+>(
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+    __2: (usize, Token, usize),
+) -> ast::PathSegment
+{
+    let __start0 = __2.2;
+    let __end0 = __2.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -623289,15 +650293,13 @@
 #[allow(clippy::too_many_arguments)]
 fn __action398<
 >(
-    __0: (usize, ast::Type, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, Vec<(ast::Ident, ast::StructInitField)>, usize),
-    __3: (usize, Token, usize),
-) -> ast::StructInitExpr
+    __0: (usize, Token, usize),
+    __1: (usize, core::option::Option<ast::Expression>, usize),
+) -> ast::ReturnStmt
 {
-    let __start0 = __3.2;
-    let __end0 = __3.2;
-    let __temp0 = __action165(
+    let __start0 = __1.2;
+    let __end0 = __1.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -623305,8 +650307,6 @@
     __action331(
         __0,
         __1,
-        __2,
-        __3,
         __temp0,
     )
 }
@@ -623314,14 +650314,19 @@
 #[allow(clippy::too_many_arguments)]
 fn __action399<
 >(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::Expression, usize),
-) -> (ast::Ident, ast::StructInitField)
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::Type>, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, Token, usize),
+    __6: (usize, Vec<ast::StructField>, usize),
+    __7: (usize, Token, usize),
+) -> ast::Struct
 {
-    let __start0 = __2.2;
-    let __end0 = __2.2;
-    let __temp0 = __action165(
+    let __start0 = __7.2;
+    let __end0 = __7.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -623330,6 +650335,11 @@
         __0,
         __1,
         __2,
+        __3,
+        __4,
+        __5,
+        __6,
+        __7,
         __temp0,
     )
 }
@@ -623337,65 +650347,21 @@
 #[allow(clippy::too_many_arguments)]
 fn __action400<
 >(
-    __0: (usize, ast::Ident, usize),
-    __1: (usize, Token, usize),
-    __2: (usize, ast::StructInitExpr, usize),
-) -> (ast::Ident, ast::StructInitField)
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::StructField>, usize),
+    __4: (usize, Token, usize),
+) -> ast::Struct
 {
-    let __start0 = __2.2;
-    let __end0 = __2.2;
-    let __temp0 = __action165(
+    let __start0 = __4.2;
+    let __end0 = __4.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action333(
-        __0,
-        __1,
-        __2,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action401<
->(
-    __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
-    __1: (usize, ast::Ident, usize),
-) -> ast::Type
-{
-    let __start0 = __1.2;
-    let __end0 = __1.2;
-    let __temp0 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action334(
-        __0,
-        __1,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action402<
->(
-    __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
-    __1: (usize, ast::Ident, 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 = __action165(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action335(
         __0,
         __1,
         __2,
@@ -623405,21 +650371,73 @@
     )
 }
 
+#[allow(clippy::too_many_arguments)]
+fn __action401<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Type, usize),
+) -> ast::StructField
+{
+    let __start0 = __2.2;
+    let __end0 = __2.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action334(
+        __0,
+        __1,
+        __2,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action402<
+>(
+    __0: (usize, ast::Type, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, Vec<(ast::Ident, ast::StructInitField)>, usize),
+    __3: (usize, Token, usize),
+) -> ast::StructInitExpr
+{
+    let __start0 = __3.2;
+    let __end0 = __3.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action335(
+        __0,
+        __1,
+        __2,
+        __3,
+        __temp0,
+    )
+}
+
 #[allow(clippy::too_many_arguments)]
 fn __action403<
 >(
-    __0: (usize, Token, usize),
-) -> ast::UnaryOp
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::Expression, usize),
+) -> (ast::Ident, ast::StructInitField)
 {
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __start0 = __2.2;
+    let __end0 = __2.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action336(
         __0,
+        __1,
+        __2,
         __temp0,
     )
 }
@@ -623427,18 +650445,22 @@
 #[allow(clippy::too_many_arguments)]
 fn __action404<
 >(
-    __0: (usize, Token, usize),
-) -> ast::UnaryOp
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, ast::StructInitExpr, usize),
+) -> (ast::Ident, ast::StructInitField)
 {
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __start0 = __2.2;
+    let __end0 = __2.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action337(
         __0,
+        __1,
+        __2,
         __temp0,
     )
 }
@@ -623446,18 +650468,20 @@
 #[allow(clippy::too_many_arguments)]
 fn __action405<
 >(
-    __0: (usize, Token, usize),
-) -> ast::UnaryOp
+    __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
+    __1: (usize, ast::Ident, usize),
+) -> ast::Type
 {
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __start0 = __1.2;
+    let __end0 = __1.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action338(
         __0,
+        __1,
         __temp0,
     )
 }
@@ -623465,18 +650489,26 @@
 #[allow(clippy::too_many_arguments)]
 fn __action406<
 >(
-    __0: (usize, u128, usize),
-) -> ast::ValueExpr
+    __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
+    __1: (usize, ast::Ident, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::Type>, usize),
+    __4: (usize, Token, usize),
+) -> ast::Type
 {
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __start0 = __4.2;
+    let __end0 = __4.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action339(
         __0,
+        __1,
+        __2,
+        __3,
+        __4,
         __temp0,
     )
 }
@@ -623484,12 +650516,12 @@
 #[allow(clippy::too_many_arguments)]
 fn __action407<
 >(
-    __0: (usize, bool, usize),
-) -> ast::ValueExpr
+    __0: (usize, Token, usize),
+) -> ast::UnaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -623503,12 +650535,12 @@
 #[allow(clippy::too_many_arguments)]
 fn __action408<
 >(
-    __0: (usize, String, usize),
-) -> ast::ValueExpr
+    __0: (usize, Token, usize),
+) -> ast::UnaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
@@ -623523,21 +650555,17 @@
 fn __action409<
 >(
     __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-    __2: (usize, ast::Block, usize),
-) -> ast::WhileStmt
+) -> ast::UnaryOp
 {
-    let __start0 = __2.2;
-    let __end0 = __2.2;
-    let __temp0 = __action165(
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
     __action342(
         __0,
-        __1,
-        __2,
         __temp0,
     )
 }
@@ -623545,16 +650573,18 @@
 #[allow(clippy::too_many_arguments)]
 fn __action410<
 >(
-    __0: (usize, ast::Expression, usize),
-) -> Vec<ast::Expression>
+    __0: (usize, u128, usize),
+) -> ast::ValueExpr
 {
-    let __start0 = __0.0;
+    let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action151(
-        __0,
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action250(
+    __action343(
+        __0,
         __temp0,
     )
 }
@@ -623562,18 +650592,18 @@
 #[allow(clippy::too_many_arguments)]
 fn __action411<
 >(
-    __lookbehind: &usize,
-    __lookahead: &usize,
-) -> Vec<ast::Expression>
+    __0: (usize, bool, usize),
+) -> ast::ValueExpr
 {
-    let __start0 = *__lookbehind;
-    let __end0 = *__lookahead;
-    let __temp0 = __action152(
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action250(
+    __action344(
+        __0,
         __temp0,
     )
 }
@@ -623581,17 +650611,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action412<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
-    __1: (usize, ast::Expression, usize),
-) -> Vec<ast::Expression>
+    __0: (usize, String, usize),
+) -> ast::ValueExpr
 {
-    let __start0 = __1.0;
-    let __end0 = __1.2;
-    let __temp0 = __action151(
-        __1,
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action169(
+        &__start0,
+        &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action251(
+    __action345(
         __0,
         __temp0,
     )
@@ -623600,18 +650630,22 @@
 #[allow(clippy::too_many_arguments)]
 fn __action413<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
-) -> Vec<ast::Expression>
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+    __2: (usize, ast::Block, usize),
+) -> ast::WhileStmt
 {
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action152(
+    let __start0 = __2.2;
+    let __end0 = __2.2;
+    let __temp0 = __action169(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action251(
+    __action346(
         __0,
+        __1,
+        __2,
         __temp0,
     )
 }
@@ -623619,18 +650653,16 @@
 #[allow(clippy::too_many_arguments)]
 fn __action414<
 >(
-    __0: (usize, Token, usize),
-    __1: (usize, ast::Expression, usize),
-) -> ast::ReturnStmt
+    __0: (usize, ast::Expression, usize),
+) -> Vec<ast::Expression>
 {
-    let __start0 = __1.0;
-    let __end0 = __1.2;
-    let __temp0 = __action151(
-        __1,
+    let __start0 = __0.0;
+    let __end0 = __0.2;
+    let __temp0 = __action155(
+        __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action394(
-        __0,
+    __action254(
         __temp0,
     )
 }
@@ -623638,18 +650670,18 @@
 #[allow(clippy::too_many_arguments)]
 fn __action415<
 >(
-    __0: (usize, Token, usize),
-) -> ast::ReturnStmt
+    __lookbehind: &usize,
+    __lookahead: &usize,
+) -> Vec<ast::Expression>
 {
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action152(
+    let __start0 = *__lookbehind;
+    let __end0 = *__lookahead;
+    let __temp0 = __action156(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action394(
-        __0,
+    __action254(
         __temp0,
     )
 }
@@ -623657,16 +650689,18 @@
 #[allow(clippy::too_many_arguments)]
 fn __action416<
 >(
-    __0: (usize, ast::FnParam, usize),
-) -> Vec<ast::FnParam>
+    __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
+    __1: (usize, ast::Expression, usize),
+) -> Vec<ast::Expression>
 {
-    let __start0 = __0.0;
-    let __end0 = __0.2;
-    let __temp0 = __action184(
-        __0,
+    let __start0 = __1.0;
+    let __end0 = __1.2;
+    let __temp0 = __action155(
+        __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action254(
+    __action255(
+        __0,
         __temp0,
     )
 }
@@ -623674,18 +650708,18 @@
 #[allow(clippy::too_many_arguments)]
 fn __action417<
 >(
-    __lookbehind: &usize,
-    __lookahead: &usize,
-) -> Vec<ast::FnParam>
+    __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
+) -> Vec<ast::Expression>
 {
-    let __start0 = *__lookbehind;
-    let __end0 = *__lookahead;
-    let __temp0 = __action185(
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action156(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action254(
+    __action255(
+        __0,
         __temp0,
     )
 }
@@ -623693,17 +650727,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action418<
 >(
-    __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
-    __1: (usize, ast::FnParam, usize),
-) -> Vec<ast::FnParam>
+    __0: (usize, Token, usize),
+    __1: (usize, ast::Expression, usize),
+) -> ast::ReturnStmt
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action184(
+    let __temp0 = __action155(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action255(
+    __action398(
         __0,
         __temp0,
     )
@@ -623712,17 +650746,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action419<
 >(
-    __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
-) -> Vec<ast::FnParam>
+    __0: (usize, Token, usize),
+) -> ast::ReturnStmt
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action185(
+    let __temp0 = __action156(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action255(
+    __action398(
         __0,
         __temp0,
     )
@@ -623731,12 +650765,12 @@
 #[allow(clippy::too_many_arguments)]
 fn __action420<
 >(
-    __0: (usize, ast::Ident, usize),
-) -> Vec<ast::Ident>
+    __0: (usize, ast::FnParam, usize),
+) -> Vec<ast::FnParam>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action197(
+    let __temp0 = __action188(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
@@ -623750,11 +650784,11 @@
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
-) -> Vec<ast::Ident>
+) -> Vec<ast::FnParam>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action198(
+    let __temp0 = __action189(
         &__start0,
         &__end0,
     );
@@ -623767,13 +650801,13 @@
 #[allow(clippy::too_many_arguments)]
 fn __action422<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
-    __1: (usize, ast::Ident, usize),
-) -> Vec<ast::Ident>
+    __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
+    __1: (usize, ast::FnParam, usize),
+) -> Vec<ast::FnParam>
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action197(
+    let __temp0 = __action188(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
@@ -623786,12 +650820,12 @@
 #[allow(clippy::too_many_arguments)]
 fn __action423<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
-) -> Vec<ast::Ident>
+    __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
+) -> Vec<ast::FnParam>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action198(
+    let __temp0 = __action189(
         &__start0,
         &__end0,
     );
@@ -623810,7 +650844,7 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action197(
+    let __temp0 = __action201(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
@@ -623828,7 +650862,7 @@
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action198(
+    let __temp0 = __action202(
         &__start0,
         &__end0,
     );
@@ -623847,7 +650881,7 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action197(
+    let __temp0 = __action201(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
@@ -623865,7 +650899,7 @@
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action198(
+    let __temp0 = __action202(
         &__start0,
         &__end0,
     );
@@ -623878,6 +650912,80 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action428<
+>(
+    __0: (usize, ast::Ident, usize),
+) -> Vec<ast::Ident>
+{
+    let __start0 = __0.0;
+    let __end0 = __0.2;
+    let __temp0 = __action201(
+        __0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action266(
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action429<
+>(
+    __lookbehind: &usize,
+    __lookahead: &usize,
+) -> Vec<ast::Ident>
+{
+    let __start0 = *__lookbehind;
+    let __end0 = *__lookahead;
+    let __temp0 = __action202(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action266(
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action430<
+>(
+    __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
+    __1: (usize, ast::Ident, usize),
+) -> Vec<ast::Ident>
+{
+    let __start0 = __1.0;
+    let __end0 = __1.2;
+    let __temp0 = __action201(
+        __1,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action267(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action431<
+>(
+    __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
+) -> Vec<ast::Ident>
+{
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action202(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action267(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action432<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -623889,11 +650997,11 @@
 {
     let __start0 = __3.0;
     let __end0 = __3.2;
-    let __temp0 = __action126(
+    let __temp0 = __action128(
         __3,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action391(
+    __action395(
         __0,
         __1,
         __2,
@@ -623904,7 +651012,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action429<
+fn __action433<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -623915,12 +651023,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __3.0;
-    let __temp0 = __action127(
+    let __temp0 = __action129(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action391(
+    __action395(
         __0,
         __1,
         __2,
@@ -623931,7 +651039,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action430<
+fn __action434<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Vec<ast::PathSegment>, usize),
@@ -623939,85 +651047,11 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action160(
+    let __temp0 = __action164(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action392(
-        __0,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action431<
->(
-    __0: (usize, ast::Ident, usize),
-) -> ast::PathExpr
-{
-    let __start0 = __0.2;
-    let __end0 = __0.2;
-    let __temp0 = __action161(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action392(
-        __0,
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action432<
->(
-    __0: (usize, ast::StructField, usize),
-) -> Vec<ast::StructField>
-{
-    let __start0 = __0.0;
-    let __end0 = __0.2;
-    let __temp0 = __action189(
-        __0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action266(
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action433<
->(
-    __lookbehind: &usize,
-    __lookahead: &usize,
-) -> Vec<ast::StructField>
-{
-    let __start0 = *__lookbehind;
-    let __end0 = *__lookahead;
-    let __temp0 = __action190(
-        &__start0,
-        &__end0,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action266(
-        __temp0,
-    )
-}
-
-#[allow(clippy::too_many_arguments)]
-fn __action434<
->(
-    __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
-    __1: (usize, ast::StructField, usize),
-) -> Vec<ast::StructField>
-{
-    let __start0 = __1.0;
-    let __end0 = __1.2;
-    let __temp0 = __action189(
-        __1,
-    );
-    let __temp0 = (__start0, __temp0, __end0);
-    __action267(
+    __action396(
         __0,
         __temp0,
     )
@@ -624026,17 +651060,17 @@
 #[allow(clippy::too_many_arguments)]
 fn __action435<
 >(
-    __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
-) -> Vec<ast::StructField>
+    __0: (usize, ast::Ident, usize),
+) -> ast::PathExpr
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action190(
+    let __temp0 = __action165(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action267(
+    __action396(
         __0,
         __temp0,
     )
@@ -624045,12 +651079,12 @@
 #[allow(clippy::too_many_arguments)]
 fn __action436<
 >(
-    __0: (usize, (ast::Ident, ast::StructInitField), usize),
-) -> Vec<(ast::Ident, ast::StructInitField)>
+    __0: (usize, ast::StructField, usize),
+) -> Vec<ast::StructField>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action179(
+    let __temp0 = __action193(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
@@ -624064,11 +651098,11 @@
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
-) -> Vec<(ast::Ident, ast::StructInitField)>
+) -> Vec<ast::StructField>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action180(
+    let __temp0 = __action194(
         &__start0,
         &__end0,
     );
@@ -624081,13 +651115,13 @@
 #[allow(clippy::too_many_arguments)]
 fn __action438<
 >(
-    __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
-    __1: (usize, (ast::Ident, ast::StructInitField), usize),
-) -> Vec<(ast::Ident, ast::StructInitField)>
+    __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
+    __1: (usize, ast::StructField, usize),
+) -> Vec<ast::StructField>
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action179(
+    let __temp0 = __action193(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
@@ -624100,12 +651134,12 @@
 #[allow(clippy::too_many_arguments)]
 fn __action439<
 >(
-    __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
-) -> Vec<(ast::Ident, ast::StructInitField)>
+    __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
+) -> Vec<ast::StructField>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action180(
+    let __temp0 = __action194(
         &__start0,
         &__end0,
     );
@@ -624119,12 +651153,12 @@
 #[allow(clippy::too_many_arguments)]
 fn __action440<
 >(
-    __0: (usize, ast::Type, usize),
-) -> Vec<ast::Type>
+    __0: (usize, (ast::Ident, ast::StructInitField), usize),
+) -> Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action169(
+    let __temp0 = __action183(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
@@ -624138,11 +651172,11 @@
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
-) -> Vec<ast::Type>
+) -> Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action170(
+    let __temp0 = __action184(
         &__start0,
         &__end0,
     );
@@ -624155,13 +651189,13 @@
 #[allow(clippy::too_many_arguments)]
 fn __action442<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Type>, usize),
-    __1: (usize, ast::Type, usize),
-) -> Vec<ast::Type>
+    __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
+    __1: (usize, (ast::Ident, ast::StructInitField), usize),
+) -> Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action169(
+    let __temp0 = __action183(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
@@ -624174,12 +651208,12 @@
 #[allow(clippy::too_many_arguments)]
 fn __action443<
 >(
-    __0: (usize, alloc::vec::Vec<ast::Type>, usize),
-) -> Vec<ast::Type>
+    __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 = __action170(
+    let __temp0 = __action184(
         &__start0,
         &__end0,
     );
@@ -624192,25 +651226,99 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action444<
+>(
+    __0: (usize, ast::Type, usize),
+) -> Vec<ast::Type>
+{
+    let __start0 = __0.0;
+    let __end0 = __0.2;
+    let __temp0 = __action173(
+        __0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action278(
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action445<
+>(
+    __lookbehind: &usize,
+    __lookahead: &usize,
+) -> Vec<ast::Type>
+{
+    let __start0 = *__lookbehind;
+    let __end0 = *__lookahead;
+    let __temp0 = __action174(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action278(
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action446<
+>(
+    __0: (usize, alloc::vec::Vec<ast::Type>, usize),
+    __1: (usize, ast::Type, usize),
+) -> Vec<ast::Type>
+{
+    let __start0 = __1.0;
+    let __end0 = __1.2;
+    let __temp0 = __action173(
+        __1,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action279(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action447<
+>(
+    __0: (usize, alloc::vec::Vec<ast::Type>, usize),
+) -> Vec<ast::Type>
+{
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action174(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action279(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action448<
 >(
     __0: (usize, ast::Ident, usize),
 ) -> ast::Type
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action163(
+    let __temp0 = __action167(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action401(
+    __action405(
         __temp0,
         __0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action445<
+fn __action449<
 >(
     __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     __1: (usize, ast::Ident, usize),
@@ -624218,18 +651326,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action164(
+    let __temp0 = __action168(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action401(
+    __action405(
         __temp0,
         __1,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action446<
+fn __action450<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -624239,12 +651347,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action163(
+    let __temp0 = __action167(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action402(
+    __action406(
         __temp0,
         __0,
         __1,
@@ -624254,7 +651362,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action447<
+fn __action451<
 >(
     __0: (usize, alloc::vec::Vec<ast::TypeQualifier>, usize),
     __1: (usize, ast::Ident, usize),
@@ -624265,11 +651373,11 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action164(
+    let __temp0 = __action168(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action402(
+    __action406(
         __temp0,
         __1,
         __2,
diff --git a/src/edlang_parser/lib.rs.html b/src/edlang_parser/lib.rs.html
index d0119870d..6c1449b7e 100644
--- a/src/edlang_parser/lib.rs.html
+++ b/src/edlang_parser/lib.rs.html
@@ -146,9 +146,9 @@
 
 pub fn parse_ast(
     source: &str,
-) -> Result<edlang_ast::Module, ParseError<usize, Token, LexicalError>> {
+) -> Result<Vec<edlang_ast::Module>, ParseError<usize, Token, LexicalError>> {
     let lexer = Lexer::new(source);
-    let parser = grammar::ModuleParser::new();
+    let parser = grammar::ModulesParser::new();
     parser.parse(lexer)
 }
 
diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js
index 8ee70b594..40a58993f 100644
--- a/trait.impl/core/clone/trait.Clone.js
+++ b/trait.impl/core/clone/trait.Clone.js
@@ -38,7 +38,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 8cfa45885..3b6874f96 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 ItemUse"],["impl Eq for WhereClause"],["impl Eq for Lit"],["impl Eq for BinOp"],["impl Eq for Lt"],["impl Eq for Macro"],["impl Eq for TraitBoundModifier"],["impl Eq for PathArguments"],["impl Eq for FatArrow"],["impl Eq for Abi"],["impl Eq for ExprPath"],["impl Eq for ItemForeignMod"],["impl Eq for PatOr"],["impl Eq for Fn"],["impl Eq for Signature"],["impl Eq for ExprRange"],["impl Eq for StaticMutability"],["impl Eq for GenericArgument"],["impl Eq for BareVariadic"],["impl Eq for SlashEq"],["impl Eq for ExprWhile"],["impl Eq for Le"],["impl Eq for TypePtr"],["impl Eq for Ge"],["impl Eq for TraitBound"],["impl Eq for ImplItemMacro"],["impl Eq for ExprAsync"],["impl Eq for LitInt"],["impl Eq for ExprRepeat"],["impl Eq for Loop"],["impl Eq for Label"],["impl Eq for TypeArray"],["impl Eq for Typeof"],["impl Eq for Star"],["impl Eq for ShrEq"],["impl Eq for SelfValue"],["impl Eq for PatParen"],["impl Eq for FieldValue"],["impl Eq for Nothing"],["impl Eq for PatTupleStruct"],["impl Eq for ItemFn"],["impl<'a> Eq for Cursor<'a>"],["impl Eq for Shl"],["impl Eq for Impl"],["impl Eq for TypeTraitObject"],["impl Eq for AngleBracketedGenericArguments"],["impl Eq for Fields"],["impl Eq for Field"],["impl Eq for ExprMacro"],["impl Eq for ForeignItemType"],["impl Eq for Become"],["impl Eq for DotDot"],["impl Eq for TraitItem"],["impl Eq for Struct"],["impl Eq for TraitItemFn"],["impl Eq for ExprTryBlock"],["impl Eq for ItemTrait"],["impl Eq for At"],["impl Eq for Auto"],["impl Eq for ExprConst"],["impl Eq for Where"],["impl Eq for LitFloat"],["impl Eq for VisRestricted"],["impl Eq for ExprReturn"],["impl Eq for FieldPat"],["impl Eq for ItemType"],["impl<'a> Eq for Turbofish<'a>"],["impl Eq for UseName"],["impl Eq for ForeignItemFn"],["impl Eq for LocalInit"],["impl Eq for AssocType"],["impl Eq for ItemTraitAlias"],["impl Eq for ItemEnum"],["impl Eq for And"],["impl Eq for Async"],["impl Eq for ExprContinue"],["impl Eq for Dot"],["impl Eq for ItemConst"],["impl Eq for SelfType"],["impl Eq for Static"],["impl Eq for DataStruct"],["impl Eq for ExprBlock"],["impl Eq for TypeInfer"],["impl Eq for ConstParam"],["impl Eq for RangeLimits"],["impl Eq for FieldsNamed"],["impl Eq for BareFnArg"],["impl Eq for Try"],["impl Eq for AndEq"],["impl Eq for Variant"],["impl Eq for TypeSlice"],["impl Eq for Group"],["impl Eq for ExprStruct"],["impl Eq for ImplItem"],["impl Eq for PatReference"],["impl Eq for Not"],["impl Eq for Unsafe"],["impl Eq for MinusEq"],["impl Eq for Pat"],["impl Eq for Use"],["impl Eq for Priv"],["impl Eq for Path"],["impl Eq for UnOp"],["impl Eq for Ref"],["impl Eq for For"],["impl Eq for DataEnum"],["impl Eq for TraitItemType"],["impl Eq for ItemExternCrate"],["impl Eq for Receiver"],["impl Eq for Brace"],["impl Eq for Break"],["impl Eq for Bracket"],["impl Eq for While"],["impl Eq for StmtMacro"],["impl Eq for Unsized"],["impl Eq for FieldMutability"],["impl Eq for BoundLifetimes"],["impl Eq for LitChar"],["impl Eq for ExprBinary"],["impl Eq for Data"],["impl Eq for AssocConst"],["impl Eq for ExprClosure"],["impl Eq for CaretEq"],["impl Eq for TypeParamBound"],["impl Eq for LitByteStr"],["impl Eq for ExprReference"],["impl Eq for ExprLet"],["impl Eq for ExprUnary"],["impl Eq for Abstract"],["impl Eq for Const"],["impl Eq for TypeBareFn"],["impl Eq for PercentEq"],["impl Eq for LifetimeParam"],["impl Eq for ExprForLoop"],["impl Eq for Index"],["impl Eq for TypePath"],["impl Eq for OrOr"],["impl Eq for OrEq"],["impl Eq for ExprCall"],["impl Eq for ImplItemConst"],["impl Eq for Dollar"],["impl Eq for ExprAssign"],["impl Eq for Stmt"],["impl Eq for ItemStruct"],["impl Eq for Move"],["impl Eq for Await"],["impl Eq for Do"],["impl Eq for Type"],["impl Eq for PathSep"],["impl Eq for Semi"],["impl Eq for Match"],["impl Eq for TypeParam"],["impl Eq for Generics"],["impl Eq for ExprLit"],["impl Eq for Continue"],["impl Eq for PredicateLifetime"],["impl Eq for Dyn"],["impl Eq for ImplRestriction"],["impl Eq for Mut"],["impl Eq for Crate"],["impl Eq for ExprMethodCall"],["impl Eq for Shr"],["impl Eq for Pound"],["impl Eq for Return"],["impl Eq for ItemStatic"],["impl Eq for TypeMacro"],["impl Eq for LitByte"],["impl Eq for FieldsUnnamed"],["impl Eq for Meta"],["impl Eq for Virtual"],["impl Eq for AttrStyle"],["impl Eq for TraitItemConst"],["impl Eq for TypeReference"],["impl Eq for ItemImpl"],["impl Eq for ItemMod"],["impl Eq for In"],["impl Eq for ExprArray"],["impl Eq for ItemUnion"],["impl Eq for ExprBreak"],["impl Eq for ExprTuple"],["impl Eq for UseRename"],["impl Eq for ExprGroup"],["impl Eq for Question"],["impl Eq for ExprInfer"],["impl Eq for ExprCast"],["impl Eq for UsePath"],["impl Eq for TypeNever"],["impl Eq for Enum"],["impl Eq for Pub"],["impl Eq for Minus"],["impl Eq for AndAnd"],["impl Eq for Eq"],["impl Eq for GenericParam"],["impl Eq for LitBool"],["impl Eq for Or"],["impl Eq for PatTuple"],["impl Eq for If"],["impl Eq for Local"],["impl Eq for PlusEq"],["impl Eq for Comma"],["impl Eq for QSelf"],["impl Eq for Else"],["impl Eq for Attribute"],["impl Eq for TypeGroup"],["impl Eq for LitStr"],["impl Eq for ShlEq"],["impl Eq for ForeignItem"],["impl Eq for Paren"],["impl Eq for TypeTuple"],["impl Eq for Macro"],["impl Eq for UseTree"],["impl Eq for PatStruct"],["impl<T, P> Eq for Punctuated<T, P>
where\n T: Eq,\n P: Eq,
"],["impl Eq for ReturnType"],["impl Eq for PatWild"],["impl Eq for Lifetime"],["impl Eq for Constraint"],["impl Eq for PatType"],["impl Eq for Final"],["impl Eq for Mod"],["impl Eq for ItemMacro"],["impl Eq for ForeignItemStatic"],["impl Eq for ExprIf"],["impl Eq for TypeImplTrait"],["impl Eq for ExprAwait"],["impl Eq for FnArg"],["impl Eq for Plus"],["impl Eq for PatIdent"],["impl Eq for ExprField"],["impl Eq for ForeignItemMacro"],["impl Eq for PathSegment"],["impl Eq for MetaList"],["impl Eq for WherePredicate"],["impl Eq for File"],["impl Eq for Let"],["impl Eq for Block"],["impl Eq for TypeParen"],["impl Eq for As"],["impl Eq for Expr"],["impl Eq for Colon"],["impl Eq for Caret"],["impl Eq for ExprIndex"],["impl Eq for EqEq"],["impl Eq for Default"],["impl Eq for UseGroup"],["impl Eq for LArrow"],["impl Eq for Union"],["impl Eq for TraitItemMacro"],["impl Eq for MetaNameValue"],["impl Eq for Super"],["impl Eq for Variadic"],["impl Eq for DataUnion"],["impl Eq for DeriveInput"],["impl Eq for ExprUnsafe"],["impl<'a> Eq for TypeGenerics<'a>"],["impl Eq for ExprMatch"],["impl Eq for Ne"],["impl Eq for PatRest"],["impl Eq for ImplItemFn"],["impl Eq for Underscore"],["impl Eq for Visibility"],["impl<'a> Eq for ImplGenerics<'a>"],["impl Eq for MacroDelimiter"],["impl Eq for DotDotEq"],["impl Eq for RArrow"],["impl Eq for Item"],["impl Eq for Percent"],["impl Eq for Extern"],["impl Eq for Trait"],["impl Eq for Gt"],["impl Eq for StarEq"],["impl Eq for Type"],["impl Eq for ImplItemType"],["impl Eq for Tilde"],["impl Eq for Box"],["impl Eq for UseGlob"],["impl Eq for Arm"],["impl Eq for PatSlice"],["impl Eq for Yield"],["impl Eq for ExprYield"],["impl Eq for Override"],["impl Eq for Member"],["impl Eq for Slash"],["impl Eq for ExprLoop"],["impl Eq for ParenthesizedGenericArguments"],["impl Eq for PredicateType"],["impl Eq for DotDotDot"],["impl Eq for ExprTry"],["impl Eq for ExprParen"]], "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 24474d0a4..b44269b7f 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 2ae9dbdfd..3ac9ed258 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 4aa5d36c8..0650eb9ab 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 PartialOrd for Lifetime"],["impl<'a> PartialOrd for Cursor<'a>"]], "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 250eb21fe..4dd9657b7 100644 --- a/trait.impl/core/convert/trait.From.js +++ b/trait.impl/core/convert/trait.From.js @@ -22,7 +22,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<PatStruct> for Pat"],["impl From<TypeParen> for Type"],["impl From<usize> for Member"],["impl From<ExprInfer> for Expr"],["impl From<ExprAsync> for Expr"],["impl From<ExprReturn> for Expr"],["impl From<UseName> for UseTree"],["impl From<ForeignItemType> for ForeignItem"],["impl From<LitByte> for Lit"],["impl From<SelfValue> for Ident"],["impl From<PatParen> for Pat"],["impl From<ExprRepeat> for Expr"],["impl From<ItemUse> for Item"],["impl From<ItemEnum> for Item"],["impl From<ExprTry> for Expr"],["impl From<PatWild> for Pat"],["impl From<ForeignItemFn> for ForeignItem"],["impl From<ExprContinue> for Expr"],["impl From<ExprLoop> for Expr"],["impl From<TypeNever> for Type"],["impl From<ExprBreak> for Expr"],["impl From<UseRename> for UseTree"],["impl From<UseGlob> for UseTree"],["impl From<PatRest> for Pat"],["impl From<usize> for Index"],["impl From<ItemType> for Item"],["impl From<ExprIndex> for Expr"],["impl From<DeriveInput> for Item"],["impl From<PatTuple> for Pat"],["impl From<TraitItemFn> for TraitItem"],["impl From<PatType> for Pat"],["impl From<ExprYield> for Expr"],["impl From<MetaList> for Meta"],["impl From<LexError> for Error"],["impl From<ItemUnion> for DeriveInput"],["impl From<ExprPath> for Pat"],["impl From<Extern> for Ident"],["impl From<ExprAwait> for Expr"],["impl From<ItemMod> for Item"],["impl From<TypeSlice> for Type"],["impl From<TypeArray> for Type"],["impl From<ItemTrait> for Item"],["impl From<TypeBareFn> for Type"],["impl From<ForeignItemMacro> for ForeignItem"],["impl From<TypeTuple> for Type"],["impl From<ExprParen> for Expr"],["impl From<ExprClosure> for Expr"],["impl From<ItemUnion> for Item"],["impl From<ConstParam> for GenericParam"],["impl From<TraitBound> for TypeParamBound"],["impl From<LitByteStr> for Lit"],["impl From<PredicateType> for WherePredicate"],["impl From<ItemImpl> for Item"],["impl From<Literal> for LitInt"],["impl From<ExprLet> for Expr"],["impl From<ExprRange> for Pat"],["impl From<ExprMatch> for Expr"],["impl From<ExprWhile> for Expr"],["impl From<TypePtr> for Type"],["impl From<TypeGroup> for Type"],["impl From<ExprRange> for Expr"],["impl From<ItemExternCrate> for Item"],["impl From<PatOr> for Pat"],["impl From<ExprBinary> for Expr"],["impl From<LifetimeParam> for GenericParam"],["impl From<Index> for Member"],["impl From<PatSlice> for Pat"],["impl From<ItemTraitAlias> for Item"],["impl From<TraitItemMacro> for TraitItem"],["impl From<PatReference> for Pat"],["impl From<ExprField> for Expr"],["impl From<ImplItemConst> for ImplItem"],["impl From<ExprUnary> for Expr"],["impl From<PatIdent> for Pat"],["impl From<ExprStruct> for Expr"],["impl From<LitChar> for Lit"],["impl From<Super> for Ident"],["impl From<ImplItemType> for ImplItem"],["impl From<LitInt> for Lit"],["impl From<ItemEnum> for DeriveInput"],["impl From<PatTupleStruct> for Pat"],["impl From<PredicateLifetime> for WherePredicate"],["impl From<UsePath> for UseTree"],["impl From<ItemStruct> for DeriveInput"],["impl From<ExprLit> for Pat"],["impl From<ExprMacro> for Expr"],["impl From<UseGroup> for UseTree"],["impl From<LitStr> for Lit"],["impl From<Underscore> for Ident"],["impl<T> From<T> for Path
where\n T: Into<PathSegment>,
"],["impl From<ExprCast> for Expr"],["impl From<ForeignItemStatic> for ForeignItem"],["impl From<ExprUnsafe> for Expr"],["impl From<TypeTraitObject> for Type"],["impl From<Crate> for Ident"],["impl From<LitFloat> for Lit"],["impl From<ExprConst> for Expr"],["impl From<ExprForLoop> for Expr"],["impl From<ItemConst> for Item"],["impl From<TypePath> for Type"],["impl From<SelfType> for Ident"],["impl From<FieldsNamed> for Fields"],["impl From<ExprReference> for Expr"],["impl From<MetaNameValue> for Meta"],["impl From<Ident> for Member"],["impl From<Receiver> for FnArg"],["impl From<FieldsUnnamed> for Fields"],["impl From<TypeImplTrait> for Type"],["impl From<TypeReference> for Type"],["impl From<ExprTuple> for Expr"],["impl From<TraitItemType> for TraitItem"],["impl From<LitBool> for Lit"],["impl From<Lifetime> for TypeParamBound"],["impl From<PatType> for FnArg"],["impl From<ExprConst> for Pat"],["impl From<ExprIf> for Expr"],["impl From<ExprArray> for Expr"],["impl From<TraitItemConst> for TraitItem"],["impl From<TypeInfer> for Type"],["impl From<ExprTryBlock> for Expr"],["impl<T> From<T> for PathSegment
where\n T: Into<Ident>,
"],["impl From<Path> for Meta"],["impl From<TypeParam> for GenericParam"],["impl From<Ident> for TypeParam"],["impl From<ExprBlock> for Expr"],["impl From<ExprGroup> for Expr"],["impl From<ItemStruct> for Item"],["impl From<ImplItemMacro> for ImplItem"],["impl From<Literal> for LitFloat"],["impl From<ItemFn> for Item"],["impl From<ExprLit> for Expr"],["impl From<ExprMethodCall> for Expr"],["impl From<ExprCall> for Expr"],["impl From<ItemMacro> for Item"],["impl From<ExprPath> for Expr"],["impl From<ExprAssign> for Expr"],["impl From<ExprMacro> for Pat"],["impl From<ItemStatic> for Item"],["impl From<ImplItemFn> for ImplItem"],["impl From<ItemForeignMod> for Item"],["impl From<TypeMacro> for Type"]], "tracing":[["impl<'a> From<&'a EnteredSpan> for Option<&'a Id>"],["impl<'a> From<&'a EnteredSpan> for Option<Id>"],["impl<'a> From<&'a Span> for Option<&'a Id>"],["impl<'a> From<&'a Span> for Option<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 be39bd8bf..e1801d6e3 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 Default"],["impl Default for In"],["impl Default for Gt"],["impl Default for Super"],["impl Default for OrOr"],["impl Default for Percent"],["impl Default for Comma"],["impl Default for Brace"],["impl Default for Group"],["impl Default for StarEq"],["impl Default for AndEq"],["impl Default for Mod"],["impl Default for Plus"],["impl Default for Le"],["impl Default for Loop"],["impl Default for Match"],["impl Default for Struct"],["impl Default for OrEq"],["impl Default for Star"],["impl Default for While"],["impl Default for Override"],["impl Default for PercentEq"],["impl Default for Do"],["impl Default for Ref"],["impl Default for Ne"],["impl Default for And"],["impl Default for Not"],["impl Default for PathSep"],["impl Default for Trait"],["impl Default for Or"],["impl Default for DotDotDot"],["impl Default for Priv"],["impl Default for Virtual"],["impl Default for Ge"],["impl Default for Mut"],["impl Default for Bracket"],["impl Default for Shr"],["impl Default for Unsafe"],["impl Default for Move"],["impl Default for Caret"],["impl Default for Dollar"],["impl Default for Macro"],["impl Default for Underscore"],["impl Default for Auto"],["impl Default for SelfValue"],["impl Default for Question"],["impl Default for Colon"],["impl Default for Try"],["impl Default for ShrEq"],["impl Default for Paren"],["impl Default for Union"],["impl Default for Const"],["impl Default for Use"],["impl<T, P> Default for Punctuated<T, P>"],["impl Default for If"],["impl Default for Become"],["impl Default for BoundLifetimes"],["impl Default for Crate"],["impl Default for PathArguments"],["impl Default for PlusEq"],["impl Default for Dyn"],["impl Default for Break"],["impl Default for EqEq"],["impl Default for Slash"],["impl Default for Yield"],["impl Default for Let"],["impl Default for As"],["impl Default for Continue"],["impl Default for DotDotEq"],["impl Default for Tilde"],["impl Default for Box"],["impl Default for Pub"],["impl Default for Enum"],["impl Default for DotDot"],["impl Default for Return"],["impl Default for Async"],["impl Default for Await"],["impl Default for Lt"],["impl Default for Pound"],["impl Default for At"],["impl Default for SelfType"],["impl Default for For"],["impl Default for RArrow"],["impl Default for Final"],["impl Default for ShlEq"],["impl Default for Generics"],["impl Default for CaretEq"],["impl Default for FatArrow"],["impl Default for Fn"],["impl Default for Static"],["impl Default for AndAnd"],["impl Default for Where"],["impl Default for Shl"],["impl Default for Semi"],["impl Default for LArrow"],["impl Default for Else"],["impl Default for MinusEq"],["impl Default for Type"],["impl Default for Typeof"],["impl Default for Unsized"],["impl Default for Impl"],["impl Default for Eq"],["impl Default for Abstract"],["impl Default for SlashEq"],["impl Default for Extern"],["impl Default for Dot"],["impl Default for Minus"]], diff --git a/trait.impl/core/error/trait.Error.js b/trait.impl/core/error/trait.Error.js index 4f5299a16..247727a05 100644 --- a/trait.impl/core/error/trait.Error.js +++ b/trait.impl/core/error/trait.Error.js @@ -11,7 +11,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 b6a7a3ddc..79abc9129 100644 --- a/trait.impl/core/fmt/trait.Debug.js +++ b/trait.impl/core/fmt/trait.Debug.js @@ -38,7 +38,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 503337c90..82eea5dba 100644 --- a/trait.impl/core/fmt/trait.Display.js +++ b/trait.impl/core/fmt/trait.Display.js @@ -24,7 +24,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 92bcf7c34..116ac2b8e 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, P> Iterator for Pairs<'a, T, P>"],["impl<'a, T> Iterator for Iter<'a, T>"],["impl<T> Iterator for IntoIter<T>"],["impl<'a, T, P> Iterator for PairsMut<'a, T, P>"],["impl<T, P> Iterator for IntoPairs<T, P>"],["impl<'a, T> Iterator for IterMut<'a, T>"]], diff --git a/trait.impl/core/marker/trait.Copy.js b/trait.impl/core/marker/trait.Copy.js index 8e9b03093..032a02324 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<'c, 'a> Copy for StepCursor<'c, 'a>"],["impl Copy for RArrow"],["impl Copy for Percent"],["impl Copy for Abstract"],["impl Copy for Fn"],["impl Copy for Gt"],["impl Copy for ShlEq"],["impl Copy for Static"],["impl Copy for Let"],["impl Copy for Struct"],["impl Copy for Extern"],["impl Copy for Super"],["impl Copy for SlashEq"],["impl Copy for As"],["impl Copy for MinusEq"],["impl Copy for Unsafe"],["impl Copy for Colon"],["impl Copy for Ge"],["impl Copy for PlusEq"],["impl Copy for OrOr"],["impl Copy for Pub"],["impl Copy for Minus"],["impl Copy for AndEq"],["impl Copy for Break"],["impl Copy for Mut"],["impl Copy for SelfValue"],["impl Copy for For"],["impl Copy for Final"],["impl Copy for If"],["impl Copy for StarEq"],["impl Copy for Async"],["impl Copy for Union"],["impl Copy for Tilde"],["impl Copy for Macro"],["impl Copy for Impl"],["impl Copy for Not"],["impl Copy for Comma"],["impl Copy for Type"],["impl Copy for In"],["impl Copy for Become"],["impl Copy for Slash"],["impl Copy for DotDotDot"],["impl Copy for Pound"],["impl Copy for PercentEq"],["impl Copy for While"],["impl Copy for RangeLimits"],["impl Copy for PathSep"],["impl Copy for Where"],["impl Copy for Default"],["impl Copy for Use"],["impl Copy for UnOp"],["impl Copy for Typeof"],["impl Copy for DotDotEq"],["impl Copy for AttrStyle"],["impl Copy for Underscore"],["impl Copy for Paren"],["impl Copy for Yield"],["impl Copy for TraitBoundModifier"],["impl<T, P> Copy for Pair<T, P>
where\n T: Copy,\n P: Copy,
"],["impl Copy for Virtual"],["impl Copy for EqEq"],["impl Copy for CaretEq"],["impl Copy for AndAnd"],["impl Copy for DotDot"],["impl Copy for SelfType"],["impl Copy for Lt"],["impl Copy for Auto"],["impl Copy for And"],["impl Copy for Return"],["impl Copy for Eq"],["impl Copy for Dollar"],["impl Copy for Trait"],["impl Copy for Do"],["impl Copy for Caret"],["impl Copy for Move"],["impl Copy for Shl"],["impl Copy for Group"],["impl Copy for Unsized"],["impl Copy for Box"],["impl Copy for LArrow"],["impl Copy for At"],["impl Copy for Enum"],["impl Copy for Dyn"],["impl Copy for Else"],["impl Copy for Semi"],["impl Copy for Or"],["impl Copy for Ref"],["impl Copy for Await"],["impl Copy for Brace"],["impl Copy for Priv"],["impl Copy for Override"],["impl Copy for Question"],["impl Copy for Continue"],["impl Copy for Star"],["impl Copy for Shr"],["impl Copy for Ne"],["impl Copy for Plus"],["impl<'a> Copy for Cursor<'a>"],["impl Copy for Loop"],["impl Copy for Crate"],["impl Copy for Dot"],["impl Copy for BinOp"],["impl Copy for ShrEq"],["impl Copy for Match"],["impl Copy for Mod"],["impl Copy for Bracket"],["impl Copy for Const"],["impl Copy for Try"],["impl Copy for Le"],["impl Copy for OrEq"],["impl Copy for FatArrow"]], "tracing_core":[["impl Copy for LevelFilter"],["impl Copy for NoSubscriber"],["impl Copy for Level"]], diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js index b169dc24b..e4d117100 100644 --- a/trait.impl/core/marker/trait.Freeze.js +++ b/trait.impl/core/marker/trait.Freeze.js @@ -17,7 +17,7 @@ "edlang_driver":[["impl Freeze for CompilerArgs",1,["edlang_driver::CompilerArgs"]]], "edlang_ir":[["impl Freeze for ScalarInt",1,["edlang_ir::scalar_int::ScalarInt"]],["impl Freeze for SymbolTable",1,["edlang_ir::SymbolTable"]],["impl Freeze for ProgramBody",1,["edlang_ir::ProgramBody"]],["impl Freeze for ModuleBody",1,["edlang_ir::ModuleBody"]],["impl Freeze for DefId",1,["edlang_ir::DefId"]],["impl Freeze for Body",1,["edlang_ir::Body"]],["impl Freeze for AdtBody",1,["edlang_ir::AdtBody"]],["impl Freeze for AdtVariant",1,["edlang_ir::AdtVariant"]],["impl Freeze for DebugInfo",1,["edlang_ir::DebugInfo"]],["impl Freeze for BasicBlock",1,["edlang_ir::BasicBlock"]],["impl Freeze for Local",1,["edlang_ir::Local"]],["impl Freeze for LocalKind",1,["edlang_ir::LocalKind"]],["impl Freeze for Statement",1,["edlang_ir::Statement"]],["impl Freeze for StatementKind",1,["edlang_ir::StatementKind"]],["impl Freeze for Terminator",1,["edlang_ir::Terminator"]],["impl Freeze for SwitchTarget",1,["edlang_ir::SwitchTarget"]],["impl Freeze for TypeInfo",1,["edlang_ir::TypeInfo"]],["impl Freeze for TypeKind",1,["edlang_ir::TypeKind"]],["impl Freeze for IntTy",1,["edlang_ir::IntTy"]],["impl Freeze for UintTy",1,["edlang_ir::UintTy"]],["impl Freeze for FloatTy",1,["edlang_ir::FloatTy"]],["impl Freeze for ConstData",1,["edlang_ir::ConstData"]],["impl Freeze for ConstKind",1,["edlang_ir::ConstKind"]],["impl Freeze for ValueTree",1,["edlang_ir::ValueTree"]],["impl Freeze for RValue",1,["edlang_ir::RValue"]],["impl Freeze for Operand",1,["edlang_ir::Operand"]],["impl Freeze for Place",1,["edlang_ir::Place"]],["impl Freeze for PlaceElem",1,["edlang_ir::PlaceElem"]],["impl Freeze for BinOp",1,["edlang_ir::BinOp"]],["impl Freeze for LogicalOp",1,["edlang_ir::LogicalOp"]],["impl Freeze for UnOp",1,["edlang_ir::UnOp"]],["impl Freeze for ConstValue",1,["edlang_ir::ConstValue"]]], "edlang_lowering":[["impl Freeze for LoweringError",1,["edlang_lowering::errors::LoweringError"]]], -"edlang_parser":[["impl Freeze for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> Freeze for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl Freeze for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl Freeze for Token",1,["edlang_parser::tokens::Token"]],["impl Freeze for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl Freeze for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl Freeze for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl Freeze for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl Freeze for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl Freeze for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], +"edlang_parser":[["impl Freeze for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> Freeze for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl Freeze for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl Freeze for Token",1,["edlang_parser::tokens::Token"]],["impl Freeze for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl Freeze for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl Freeze for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl Freeze for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl Freeze for ModulesParser",1,["edlang_parser::grammar::grammar::__parse__Modules::ModulesParser"]],["impl Freeze for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl Freeze for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], "edlang_session":[["impl Freeze for Session",1,["edlang_session::Session"]],["impl Freeze for OptLevel",1,["edlang_session::OptLevel"]],["impl Freeze for DebugInfo",1,["edlang_session::DebugInfo"]]], "edlang_span":[["impl Freeze for Span",1,["edlang_span::Span"]]], "either":[["impl<L, R> Freeze for IterEither<L, R>
where\n L: Freeze,\n R: Freeze,
",1,["either::iterator::IterEither"]],["impl<L, R> Freeze for Either<L, R>
where\n L: Freeze,\n R: Freeze,
",1,["either::Either"]]], diff --git a/trait.impl/core/marker/trait.Send.js b/trait.impl/core/marker/trait.Send.js index 06d277fd2..40fd8cc13 100644 --- a/trait.impl/core/marker/trait.Send.js +++ b/trait.impl/core/marker/trait.Send.js @@ -17,7 +17,7 @@ "edlang_driver":[["impl Send for CompilerArgs",1,["edlang_driver::CompilerArgs"]]], "edlang_ir":[["impl Send for ScalarInt",1,["edlang_ir::scalar_int::ScalarInt"]],["impl Send for SymbolTable",1,["edlang_ir::SymbolTable"]],["impl Send for ProgramBody",1,["edlang_ir::ProgramBody"]],["impl Send for ModuleBody",1,["edlang_ir::ModuleBody"]],["impl Send for DefId",1,["edlang_ir::DefId"]],["impl Send for Body",1,["edlang_ir::Body"]],["impl Send for AdtBody",1,["edlang_ir::AdtBody"]],["impl Send for AdtVariant",1,["edlang_ir::AdtVariant"]],["impl Send for DebugInfo",1,["edlang_ir::DebugInfo"]],["impl Send for BasicBlock",1,["edlang_ir::BasicBlock"]],["impl Send for Local",1,["edlang_ir::Local"]],["impl Send for LocalKind",1,["edlang_ir::LocalKind"]],["impl Send for Statement",1,["edlang_ir::Statement"]],["impl Send for StatementKind",1,["edlang_ir::StatementKind"]],["impl Send for Terminator",1,["edlang_ir::Terminator"]],["impl Send for SwitchTarget",1,["edlang_ir::SwitchTarget"]],["impl Send for TypeInfo",1,["edlang_ir::TypeInfo"]],["impl Send for TypeKind",1,["edlang_ir::TypeKind"]],["impl Send for IntTy",1,["edlang_ir::IntTy"]],["impl Send for UintTy",1,["edlang_ir::UintTy"]],["impl Send for FloatTy",1,["edlang_ir::FloatTy"]],["impl Send for ConstData",1,["edlang_ir::ConstData"]],["impl Send for ConstKind",1,["edlang_ir::ConstKind"]],["impl Send for ValueTree",1,["edlang_ir::ValueTree"]],["impl Send for RValue",1,["edlang_ir::RValue"]],["impl Send for Operand",1,["edlang_ir::Operand"]],["impl Send for Place",1,["edlang_ir::Place"]],["impl Send for PlaceElem",1,["edlang_ir::PlaceElem"]],["impl Send for BinOp",1,["edlang_ir::BinOp"]],["impl Send for LogicalOp",1,["edlang_ir::LogicalOp"]],["impl Send for UnOp",1,["edlang_ir::UnOp"]],["impl Send for ConstValue",1,["edlang_ir::ConstValue"]]], "edlang_lowering":[["impl Send for LoweringError",1,["edlang_lowering::errors::LoweringError"]]], -"edlang_parser":[["impl Send for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> Send for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl Send for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl Send for Token",1,["edlang_parser::tokens::Token"]],["impl Send for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl Send for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl Send for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl Send for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl Send for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl Send for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], +"edlang_parser":[["impl Send for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> Send for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl Send for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl Send for Token",1,["edlang_parser::tokens::Token"]],["impl Send for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl Send for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl Send for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl Send for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl Send for ModulesParser",1,["edlang_parser::grammar::grammar::__parse__Modules::ModulesParser"]],["impl Send for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl Send for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], "edlang_session":[["impl Send for Session",1,["edlang_session::Session"]],["impl Send for OptLevel",1,["edlang_session::OptLevel"]],["impl Send for DebugInfo",1,["edlang_session::DebugInfo"]]], "edlang_span":[["impl Send for Span",1,["edlang_span::Span"]]], "either":[["impl<L, R> Send for IterEither<L, R>
where\n L: Send,\n R: Send,
",1,["either::iterator::IterEither"]],["impl<L, R> Send for Either<L, R>
where\n L: Send,\n R: Send,
",1,["either::Either"]]], diff --git a/trait.impl/core/marker/trait.StructuralEq.js b/trait.impl/core/marker/trait.StructuralEq.js index 91c53ccd6..dca3a5ecb 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<A, B> StructuralEq for Tee<A, B>"],["impl<M> StructuralEq for WithMinLevel<M>"],["impl StructuralEq for Full"],["impl StructuralEq for Compact"],["impl StructuralEq for Pretty"],["impl StructuralEq for FmtSpan"],["impl<A, B> StructuralEq for EitherWriter<A, B>"],["impl<A, B> StructuralEq for OrElse<A, B>"],["impl<M, F> StructuralEq for WithFilter<M, F>"],["impl StructuralEq for Directive"],["impl<M> StructuralEq for WithMaxLevel<M>"],["impl StructuralEq for Uptime"],["impl StructuralEq for SystemTime"]], diff --git a/trait.impl/core/marker/trait.StructuralPartialEq.js b/trait.impl/core/marker/trait.StructuralPartialEq.js index 65f78e13a..d330f9c2c 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/marker/trait.Sync.js b/trait.impl/core/marker/trait.Sync.js index 38bfa5e47..23f2c2e40 100644 --- a/trait.impl/core/marker/trait.Sync.js +++ b/trait.impl/core/marker/trait.Sync.js @@ -17,7 +17,7 @@ "edlang_driver":[["impl Sync for CompilerArgs",1,["edlang_driver::CompilerArgs"]]], "edlang_ir":[["impl Sync for ScalarInt",1,["edlang_ir::scalar_int::ScalarInt"]],["impl Sync for SymbolTable",1,["edlang_ir::SymbolTable"]],["impl Sync for ProgramBody",1,["edlang_ir::ProgramBody"]],["impl Sync for ModuleBody",1,["edlang_ir::ModuleBody"]],["impl Sync for DefId",1,["edlang_ir::DefId"]],["impl Sync for Body",1,["edlang_ir::Body"]],["impl Sync for AdtBody",1,["edlang_ir::AdtBody"]],["impl Sync for AdtVariant",1,["edlang_ir::AdtVariant"]],["impl Sync for DebugInfo",1,["edlang_ir::DebugInfo"]],["impl Sync for BasicBlock",1,["edlang_ir::BasicBlock"]],["impl Sync for Local",1,["edlang_ir::Local"]],["impl Sync for LocalKind",1,["edlang_ir::LocalKind"]],["impl Sync for Statement",1,["edlang_ir::Statement"]],["impl Sync for StatementKind",1,["edlang_ir::StatementKind"]],["impl Sync for Terminator",1,["edlang_ir::Terminator"]],["impl Sync for SwitchTarget",1,["edlang_ir::SwitchTarget"]],["impl Sync for TypeInfo",1,["edlang_ir::TypeInfo"]],["impl Sync for TypeKind",1,["edlang_ir::TypeKind"]],["impl Sync for IntTy",1,["edlang_ir::IntTy"]],["impl Sync for UintTy",1,["edlang_ir::UintTy"]],["impl Sync for FloatTy",1,["edlang_ir::FloatTy"]],["impl Sync for ConstData",1,["edlang_ir::ConstData"]],["impl Sync for ConstKind",1,["edlang_ir::ConstKind"]],["impl Sync for ValueTree",1,["edlang_ir::ValueTree"]],["impl Sync for RValue",1,["edlang_ir::RValue"]],["impl Sync for Operand",1,["edlang_ir::Operand"]],["impl Sync for Place",1,["edlang_ir::Place"]],["impl Sync for PlaceElem",1,["edlang_ir::PlaceElem"]],["impl Sync for BinOp",1,["edlang_ir::BinOp"]],["impl Sync for LogicalOp",1,["edlang_ir::LogicalOp"]],["impl Sync for UnOp",1,["edlang_ir::UnOp"]],["impl Sync for ConstValue",1,["edlang_ir::ConstValue"]]], "edlang_lowering":[["impl Sync for LoweringError",1,["edlang_lowering::errors::LoweringError"]]], -"edlang_parser":[["impl Sync for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> Sync for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl Sync for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl Sync for Token",1,["edlang_parser::tokens::Token"]],["impl Sync for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl Sync for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl Sync for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl Sync for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl Sync for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl Sync for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], +"edlang_parser":[["impl Sync for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> Sync for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl Sync for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl Sync for Token",1,["edlang_parser::tokens::Token"]],["impl Sync for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl Sync for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl Sync for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl Sync for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl Sync for ModulesParser",1,["edlang_parser::grammar::grammar::__parse__Modules::ModulesParser"]],["impl Sync for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl Sync for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], "edlang_session":[["impl Sync for Session",1,["edlang_session::Session"]],["impl Sync for OptLevel",1,["edlang_session::OptLevel"]],["impl Sync for DebugInfo",1,["edlang_session::DebugInfo"]]], "edlang_span":[["impl Sync for Span",1,["edlang_span::Span"]]], "either":[["impl<L, R> Sync for IterEither<L, R>
where\n L: Sync,\n R: Sync,
",1,["either::iterator::IterEither"]],["impl<L, R> Sync for Either<L, R>
where\n L: Sync,\n R: Sync,
",1,["either::Either"]]], diff --git a/trait.impl/core/marker/trait.Unpin.js b/trait.impl/core/marker/trait.Unpin.js index ce0bc2ee5..921453476 100644 --- a/trait.impl/core/marker/trait.Unpin.js +++ b/trait.impl/core/marker/trait.Unpin.js @@ -17,7 +17,7 @@ "edlang_driver":[["impl Unpin for CompilerArgs",1,["edlang_driver::CompilerArgs"]]], "edlang_ir":[["impl Unpin for ScalarInt",1,["edlang_ir::scalar_int::ScalarInt"]],["impl Unpin for SymbolTable",1,["edlang_ir::SymbolTable"]],["impl Unpin for ProgramBody",1,["edlang_ir::ProgramBody"]],["impl Unpin for ModuleBody",1,["edlang_ir::ModuleBody"]],["impl Unpin for DefId",1,["edlang_ir::DefId"]],["impl Unpin for Body",1,["edlang_ir::Body"]],["impl Unpin for AdtBody",1,["edlang_ir::AdtBody"]],["impl Unpin for AdtVariant",1,["edlang_ir::AdtVariant"]],["impl Unpin for DebugInfo",1,["edlang_ir::DebugInfo"]],["impl Unpin for BasicBlock",1,["edlang_ir::BasicBlock"]],["impl Unpin for Local",1,["edlang_ir::Local"]],["impl Unpin for LocalKind",1,["edlang_ir::LocalKind"]],["impl Unpin for Statement",1,["edlang_ir::Statement"]],["impl Unpin for StatementKind",1,["edlang_ir::StatementKind"]],["impl Unpin for Terminator",1,["edlang_ir::Terminator"]],["impl Unpin for SwitchTarget",1,["edlang_ir::SwitchTarget"]],["impl Unpin for TypeInfo",1,["edlang_ir::TypeInfo"]],["impl Unpin for TypeKind",1,["edlang_ir::TypeKind"]],["impl Unpin for IntTy",1,["edlang_ir::IntTy"]],["impl Unpin for UintTy",1,["edlang_ir::UintTy"]],["impl Unpin for FloatTy",1,["edlang_ir::FloatTy"]],["impl Unpin for ConstData",1,["edlang_ir::ConstData"]],["impl Unpin for ConstKind",1,["edlang_ir::ConstKind"]],["impl Unpin for ValueTree",1,["edlang_ir::ValueTree"]],["impl Unpin for RValue",1,["edlang_ir::RValue"]],["impl Unpin for Operand",1,["edlang_ir::Operand"]],["impl Unpin for Place",1,["edlang_ir::Place"]],["impl Unpin for PlaceElem",1,["edlang_ir::PlaceElem"]],["impl Unpin for BinOp",1,["edlang_ir::BinOp"]],["impl Unpin for LogicalOp",1,["edlang_ir::LogicalOp"]],["impl Unpin for UnOp",1,["edlang_ir::UnOp"]],["impl Unpin for ConstValue",1,["edlang_ir::ConstValue"]]], "edlang_lowering":[["impl Unpin for LoweringError",1,["edlang_lowering::errors::LoweringError"]]], -"edlang_parser":[["impl Unpin for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> Unpin for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl Unpin for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl Unpin for Token",1,["edlang_parser::tokens::Token"]],["impl Unpin for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl Unpin for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl Unpin for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl Unpin for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl Unpin for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl Unpin for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], +"edlang_parser":[["impl Unpin for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> Unpin for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl Unpin for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl Unpin for Token",1,["edlang_parser::tokens::Token"]],["impl Unpin for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl Unpin for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl Unpin for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl Unpin for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl Unpin for ModulesParser",1,["edlang_parser::grammar::grammar::__parse__Modules::ModulesParser"]],["impl Unpin for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl Unpin for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], "edlang_session":[["impl Unpin for Session",1,["edlang_session::Session"]],["impl Unpin for OptLevel",1,["edlang_session::OptLevel"]],["impl Unpin for DebugInfo",1,["edlang_session::DebugInfo"]]], "edlang_span":[["impl Unpin for Span",1,["edlang_span::Span"]]], "either":[["impl<L, R> Unpin for IterEither<L, R>
where\n L: Unpin,\n R: Unpin,
",1,["either::iterator::IterEither"]],["impl<L, R> Unpin for Either<L, R>
where\n L: Unpin,\n R: Unpin,
",1,["either::Either"]]], diff --git a/trait.impl/core/ops/drop/trait.Drop.js b/trait.impl/core/ops/drop/trait.Drop.js index 86397f877..5b7a65471 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 PassBuilderOptions"],["impl Drop for Context"],["impl Drop for SectionIterator"],["impl Drop for SymbolIterator"],["impl Drop for GenericValue<'_>"],["impl Drop for Module<'_>"],["impl Drop for MemoryBuffer"],["impl Drop for TargetMachine"],["impl<'ctx> Drop for DebugInfoBuilder<'ctx>"],["impl Drop for TargetData"],["impl Drop for ObjectFile"],["impl Drop for ExecutionEngine<'_>"],["impl Drop for RelocationIterator"],["impl<T> Drop for PassManager<T>"],["impl Drop for Builder<'_>"],["impl Drop for LLVMString"]], "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/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index 767639fea..d2f591878 100644 --- a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -17,7 +17,7 @@ "edlang_driver":[["impl RefUnwindSafe for CompilerArgs",1,["edlang_driver::CompilerArgs"]]], "edlang_ir":[["impl RefUnwindSafe for ScalarInt",1,["edlang_ir::scalar_int::ScalarInt"]],["impl RefUnwindSafe for SymbolTable",1,["edlang_ir::SymbolTable"]],["impl RefUnwindSafe for ProgramBody",1,["edlang_ir::ProgramBody"]],["impl RefUnwindSafe for ModuleBody",1,["edlang_ir::ModuleBody"]],["impl RefUnwindSafe for DefId",1,["edlang_ir::DefId"]],["impl RefUnwindSafe for Body",1,["edlang_ir::Body"]],["impl RefUnwindSafe for AdtBody",1,["edlang_ir::AdtBody"]],["impl RefUnwindSafe for AdtVariant",1,["edlang_ir::AdtVariant"]],["impl RefUnwindSafe for DebugInfo",1,["edlang_ir::DebugInfo"]],["impl RefUnwindSafe for BasicBlock",1,["edlang_ir::BasicBlock"]],["impl RefUnwindSafe for Local",1,["edlang_ir::Local"]],["impl RefUnwindSafe for LocalKind",1,["edlang_ir::LocalKind"]],["impl RefUnwindSafe for Statement",1,["edlang_ir::Statement"]],["impl RefUnwindSafe for StatementKind",1,["edlang_ir::StatementKind"]],["impl RefUnwindSafe for Terminator",1,["edlang_ir::Terminator"]],["impl RefUnwindSafe for SwitchTarget",1,["edlang_ir::SwitchTarget"]],["impl RefUnwindSafe for TypeInfo",1,["edlang_ir::TypeInfo"]],["impl RefUnwindSafe for TypeKind",1,["edlang_ir::TypeKind"]],["impl RefUnwindSafe for IntTy",1,["edlang_ir::IntTy"]],["impl RefUnwindSafe for UintTy",1,["edlang_ir::UintTy"]],["impl RefUnwindSafe for FloatTy",1,["edlang_ir::FloatTy"]],["impl RefUnwindSafe for ConstData",1,["edlang_ir::ConstData"]],["impl RefUnwindSafe for ConstKind",1,["edlang_ir::ConstKind"]],["impl RefUnwindSafe for ValueTree",1,["edlang_ir::ValueTree"]],["impl RefUnwindSafe for RValue",1,["edlang_ir::RValue"]],["impl RefUnwindSafe for Operand",1,["edlang_ir::Operand"]],["impl RefUnwindSafe for Place",1,["edlang_ir::Place"]],["impl RefUnwindSafe for PlaceElem",1,["edlang_ir::PlaceElem"]],["impl RefUnwindSafe for BinOp",1,["edlang_ir::BinOp"]],["impl RefUnwindSafe for LogicalOp",1,["edlang_ir::LogicalOp"]],["impl RefUnwindSafe for UnOp",1,["edlang_ir::UnOp"]],["impl RefUnwindSafe for ConstValue",1,["edlang_ir::ConstValue"]]], "edlang_lowering":[["impl RefUnwindSafe for LoweringError",1,["edlang_lowering::errors::LoweringError"]]], -"edlang_parser":[["impl RefUnwindSafe for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> RefUnwindSafe for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl RefUnwindSafe for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl RefUnwindSafe for Token",1,["edlang_parser::tokens::Token"]],["impl RefUnwindSafe for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl RefUnwindSafe for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl RefUnwindSafe for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl RefUnwindSafe for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl RefUnwindSafe for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl RefUnwindSafe for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], +"edlang_parser":[["impl RefUnwindSafe for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> RefUnwindSafe for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl RefUnwindSafe for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl RefUnwindSafe for Token",1,["edlang_parser::tokens::Token"]],["impl RefUnwindSafe for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl RefUnwindSafe for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl RefUnwindSafe for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl RefUnwindSafe for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl RefUnwindSafe for ModulesParser",1,["edlang_parser::grammar::grammar::__parse__Modules::ModulesParser"]],["impl RefUnwindSafe for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl RefUnwindSafe for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], "edlang_session":[["impl RefUnwindSafe for Session",1,["edlang_session::Session"]],["impl RefUnwindSafe for OptLevel",1,["edlang_session::OptLevel"]],["impl RefUnwindSafe for DebugInfo",1,["edlang_session::DebugInfo"]]], "edlang_span":[["impl RefUnwindSafe for Span",1,["edlang_span::Span"]]], "either":[["impl<L, R> RefUnwindSafe for IterEither<L, R>
where\n L: RefUnwindSafe,\n R: RefUnwindSafe,
",1,["either::iterator::IterEither"]],["impl<L, R> RefUnwindSafe for Either<L, R>
where\n L: RefUnwindSafe,\n R: RefUnwindSafe,
",1,["either::Either"]]], diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index 91621bafd..8fdb9aae4 100644 --- a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -17,7 +17,7 @@ "edlang_driver":[["impl UnwindSafe for CompilerArgs",1,["edlang_driver::CompilerArgs"]]], "edlang_ir":[["impl UnwindSafe for ScalarInt",1,["edlang_ir::scalar_int::ScalarInt"]],["impl UnwindSafe for SymbolTable",1,["edlang_ir::SymbolTable"]],["impl UnwindSafe for ProgramBody",1,["edlang_ir::ProgramBody"]],["impl UnwindSafe for ModuleBody",1,["edlang_ir::ModuleBody"]],["impl UnwindSafe for DefId",1,["edlang_ir::DefId"]],["impl UnwindSafe for Body",1,["edlang_ir::Body"]],["impl UnwindSafe for AdtBody",1,["edlang_ir::AdtBody"]],["impl UnwindSafe for AdtVariant",1,["edlang_ir::AdtVariant"]],["impl UnwindSafe for DebugInfo",1,["edlang_ir::DebugInfo"]],["impl UnwindSafe for BasicBlock",1,["edlang_ir::BasicBlock"]],["impl UnwindSafe for Local",1,["edlang_ir::Local"]],["impl UnwindSafe for LocalKind",1,["edlang_ir::LocalKind"]],["impl UnwindSafe for Statement",1,["edlang_ir::Statement"]],["impl UnwindSafe for StatementKind",1,["edlang_ir::StatementKind"]],["impl UnwindSafe for Terminator",1,["edlang_ir::Terminator"]],["impl UnwindSafe for SwitchTarget",1,["edlang_ir::SwitchTarget"]],["impl UnwindSafe for TypeInfo",1,["edlang_ir::TypeInfo"]],["impl UnwindSafe for TypeKind",1,["edlang_ir::TypeKind"]],["impl UnwindSafe for IntTy",1,["edlang_ir::IntTy"]],["impl UnwindSafe for UintTy",1,["edlang_ir::UintTy"]],["impl UnwindSafe for FloatTy",1,["edlang_ir::FloatTy"]],["impl UnwindSafe for ConstData",1,["edlang_ir::ConstData"]],["impl UnwindSafe for ConstKind",1,["edlang_ir::ConstKind"]],["impl UnwindSafe for ValueTree",1,["edlang_ir::ValueTree"]],["impl UnwindSafe for RValue",1,["edlang_ir::RValue"]],["impl UnwindSafe for Operand",1,["edlang_ir::Operand"]],["impl UnwindSafe for Place",1,["edlang_ir::Place"]],["impl UnwindSafe for PlaceElem",1,["edlang_ir::PlaceElem"]],["impl UnwindSafe for BinOp",1,["edlang_ir::BinOp"]],["impl UnwindSafe for LogicalOp",1,["edlang_ir::LogicalOp"]],["impl UnwindSafe for UnOp",1,["edlang_ir::UnOp"]],["impl UnwindSafe for ConstValue",1,["edlang_ir::ConstValue"]]], "edlang_lowering":[["impl UnwindSafe for LoweringError",1,["edlang_lowering::errors::LoweringError"]]], -"edlang_parser":[["impl UnwindSafe for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> UnwindSafe for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl UnwindSafe for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl UnwindSafe for Token",1,["edlang_parser::tokens::Token"]],["impl UnwindSafe for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl UnwindSafe for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl UnwindSafe for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl UnwindSafe for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl UnwindSafe for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl UnwindSafe for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], +"edlang_parser":[["impl UnwindSafe for LexicalError",1,["edlang_parser::lexer::LexicalError"]],["impl<'input> UnwindSafe for Lexer<'input>",1,["edlang_parser::lexer::Lexer"]],["impl UnwindSafe for LexingError",1,["edlang_parser::tokens::LexingError"]],["impl UnwindSafe for Token",1,["edlang_parser::tokens::Token"]],["impl UnwindSafe for BinaryFirstLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser"]],["impl UnwindSafe for BinarySecondLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser"]],["impl UnwindSafe for BinaryThirdLvlOpParser",1,["edlang_parser::grammar::grammar::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser"]],["impl UnwindSafe for ModuleParser",1,["edlang_parser::grammar::grammar::__parse__Module::ModuleParser"]],["impl UnwindSafe for ModulesParser",1,["edlang_parser::grammar::grammar::__parse__Modules::ModulesParser"]],["impl UnwindSafe for PathSegmentsParser",1,["edlang_parser::grammar::grammar::__parse__PathSegments::PathSegmentsParser"]],["impl UnwindSafe for UnaryOpParser",1,["edlang_parser::grammar::grammar::__parse__UnaryOp::UnaryOpParser"]]], "edlang_session":[["impl UnwindSafe for Session",1,["edlang_session::Session"]],["impl UnwindSafe for OptLevel",1,["edlang_session::OptLevel"]],["impl UnwindSafe for DebugInfo",1,["edlang_session::DebugInfo"]]], "edlang_span":[["impl UnwindSafe for Span",1,["edlang_span::Span"]]], "either":[["impl<L, R> UnwindSafe for IterEither<L, R>
where\n L: UnwindSafe,\n R: UnwindSafe,
",1,["either::iterator::IterEither"]],["impl<L, R> UnwindSafe for Either<L, R>
where\n L: UnwindSafe,\n R: UnwindSafe,
",1,["either::Either"]]], diff --git a/type.impl/core/result/enum.Result.js b/type.impl/core/result/enum.Result.js index 32ce5694c..d68417e18 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"]],